lunes, 30 de junio de 2008

Las 9 reglas para un mejor diseño de software

Hace algunos días, por recomendación de un amigo (Karel para los que lo conocen), lei algunos artículos de un libro llamado The ThoughtWorks Anthology (tengo el libro en pdf para el que le interese), y me llamo la atención un articulo llamado “Object Calisthenics”, acerca de un conjunto de reglas, por cierto bien restrictivas, para lograr según el autor Jeff Bay, (un ThoughtWorker, es decir trabaja en ThoughtWorks) un mejor diseño del software. Aquí abajo enunciare en español, las 9 reglas, que muchas de ellas a primera vista les parecerán un disparate, y difícil de seguir al pie de la letra. El autor para probar que puede usarse en cualquier proyecto de software, acaba de terminar uno con más de 100 000 líneas de código, usando las 9 reglas.

Pues sin mas, aqui van:

1- Usa solo un nivel de indentación por método (Use only one level of indentation per method).

2- No uses el “else” dentro de una condicional (Don’t use the else keyword).

3- Usa Wrappers para los tipos primitivos y las cadenas (Wrap all primitives and strings)

4- Solo usa un punto por línea (Use only one dot per line).

5- No abrevies (Don’t abbreviate).

6- Mantén las clases pequeñas (Keep all entities small)

7- No utilices una clase que tenga mas de 2 variables de instancia.(Don’t use any classes with more than two instance variables)

8- Una clase que contenga una colección no debe contener otras variables de instancia (Use first-class collections).

9- No use setters y getters (Don’t use any getters/setters/properties).

La explicacion de cada una de las reglas, y las razones del autor estan en el ensayo que forma parte del libro The ThoughtWorks Anthology ,y los interesados que me escriban y pondre el libro en alguna parte. No se han hecho esperar las reacciones (el libro salio Marzo 2008), pongan Object Calisthenics en google y veran pros y contra.

Se embullan a hacer la prueba? Ya yo lo estoy intentando y en un proximo post, les dire.

viernes, 20 de junio de 2008

AUMENTA LA PRODUCTIVIDAD CON RUBY ON RAILS

Quizas hayan escuchado de Ruby on Rails (RoR). Para los que no, este es un framework que desde hacer unos 3 años a causado una explosión en lo referente a programación web. Tanto así que hay toda una subcultura y culto en la red alrededor de este framework.

¿ Pero que es Ruby on Rails ?

Según su sitio web Ruby on Rails es: "Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustaintable productivity. It lets you write beautiful code by favoring convention over configuration." En pocas palabras y en mi experiencia, es un framework que te ayuda a organizarte mejor para llevar a cabo proyectos relativamente grandes, permitiendo aumentar la productividad hasta un 70% en comparación con otros proyectos con Spring, Tapestry y Struts. Creado por David Heinemeier Hansson (DHH) cuando estaba desarrollando la aplicación BaseCamp en 37signals. DHH un tiempo después de publicarse BaseCamp regalo su framework llamandolo Ruby on Rails.

Sus puntos fuertes son:
  • Uso de lenguaje Ruby
  • Convention over Configuration (CoC)
  • Don´t Repeat Your Self (DRY)
¿ Por qué es tan productivo RoR ?

Bueno, como dice el dicho, ver para creer, aquí les va un link de los muchos que hay en youtube y si quieren pueden ver ese mismo video con mejor calidad aquí.

Impacto de RoR

RoR ha llamado la atención de mucha gente, tanto grandes como pequeños, de hecho Microsoft creo que tiene un demo para agregar Ruby y RoR en su framework Visual Studio.
Algunos otros lenguajes de programación más convensionales han desarrollado frameworks tratado de adoptar la filosofia que ha logrado el exito de RoR como son:


Grandes aplicaciones han migrado a RoR y apostado por este relativamente nuevo framework:
Como empezar

Para los que deseen empezar a usar RoR y no maltratarse con el notepad y la línea de comandos, pueden usar estos editores: Windows, Linux Aptana, para los que usen MAC TextMate. Si les parece intersante RoR, aquí les van los libros indispensables:
Otros sitios:
Bueno, espero que les haya sido interesante.

La 2da piedra!!! "Code Smells"

Al parecer por falta de tiempo en estos días, nadie ha querido romper el hielo en este blog (me refiero a los 3 contribuyentes que ya se han apuntado en este blog), yo rompí el hielo (gastando algún tiempo buscando donde poner el blog) y lance la primera piedra, al parecer me tocara lanzar la segunda.

Empezare por algo que he visto últimamente reflejado en varias publicaciones. El que halla programado por algún tiempo habrá notado y se ha dicho, "este código esta feo" y en busca de la perfección lo cambia una y otra vez, porque no le cuadra como quedan las clases, o los paquetes, métodos muy largos, o no se, simple intuición.

Para que el que no lo sabe (hasta hace poco yo no lo sabia), hay un termino en ingles "Code Smells" para definir este tipo de "código feo", no me aventuro a traducir al español este termino, y no es mas que practicas cuando programamos que debiéramos evitar, o que vemos y compulsivamente deberíamos tratar de refactorizarlas y cambiarlas por el bien del sistema que estamos "construyendo" y ya veran el por que en los artículos recomendados abajo. Este termino fue bautizado por Kent Beck, un guru de la programación ágil, y que ayudaba a Martin fowler (otro guru mas www.martinfowler.com), cuando escribía el libro "Refactoring: Improving the Design of Existing Code" (yo lo tengo en PDF para el que lo quiera, se los recomiendo), y es allí donde definen, los famosos "Code Smells". Pero dejémosle a los especialista las explicaciones, aquí pongo algunos artículos sobre "Code Smell" para los interesados, ya que no valdría la pena que yo le dijera en español, lo que esta bien explicadito en ingles :D.

http://martinfowler.com/bliki/CodeSmell.html

http://wiki.java.net/bin/view/People/SmellsToRefactorings

http://www.codinghorror.com/blog/archives/000589.html
(gracias al Karel)

PD: Bueno no soy buen escritor, pero si quería terminar de abrir el blog, y que todos nos ayudemos a mejorarnos como programadores, asi que espero que los mas especialistas, empiecen a contribuir y que nos hagamos la costumbre de revisar al menos una vez al día, y comentar sobre los artículos que se postean, dentro de ese apretado tiempo de que todos disfrutamos. Y que cualquier puede postear, y sino tiene tiempo de entrar o algo que lo mande a los otros, para postearlo.

martes, 17 de junio de 2008

Nace el blog

Queremos crear un blog para compartir informacion relacionada con el mundo de la programacion, los nuevos lenguajes y tendencias. Creo que sera mejor que enviar emails, asi tenemos toda la informacion concentrada en una pagina, donde todos podemos ver y discutir sobre cuestiones de programacion y asi ser mejores programadores.

We want to have a blog to share information related to programming, OO design and principles, languages and new tendencies within the IT industry.