archivo

Archivos diarios: junio 14, 2011

Martin Fowler realiza la siguiente reflexión (traducción libre): “Una de las cosas que he estado tratando de hacer ha consistido en buscar las reglas más simples que sustenten un diseño bueno o malo. Creo que una de las reglas más valiosas es evitar la duplicidad en el código. Una y solo una vez es la frase de la Programación Extrema. Los autores del libro “The Pragmatic Programmer” (Andrew Hunt y Dave Thomas) utilizan el término “No te repitas tu mismo” (Don’t repeat yourself) también denominado principio DRY.”

No hay más que pasarle el analizador estático de código Sonar a cualquier software para que te empiece a detectar un porcentaje más o menos importante de código duplicado en un programa.

Es complicado evitar la duplicidad de código en equipos de proyecto medianamente grandes o cuando existe el riesgo de no cumplir con los plazos del proyecto (en estos casos se busca que el software funcione, sea como sea y caiga quien caiga).

Sin embargo, sí que estoy de acuerdo en que en la medida de lo posible se debe evitar la utilización de código duplicado o bien si se usa, por el motivo que sea, que posteriormente se refactorice.

Es difícil sacar tiempo para refactorizar, salvo que ya lo tengas integrado dentro de la metodología de desarrollo que se esté utilizando, como por ejemplo si se utiliza Programación Extrema. Sin embargo, si en la planificación de las iteraciones se prevé una dedicación a realizar esta actividad, es posible hacerla independientemente de la metodología de base que se esté utilizando.

Existen generadores de código que pueden producir código duplicado. ¿Es ágil renunciar al generador de código? No lo es, pero hay que tener en cuenta que en el momento en que no se disponga de dicho generador empezarán los problemas, ya que lo que se te soluciona automáticamente, después se tiene que arreglar manualmente y lo mismo el esfuerzo necesario (deuda técnica) reduce considerablemente la mantenibilidad del sistema. Lo que es ágil realmente es retocar el generador para disminuir o eliminar la cantidad de código duplicado que proporciona.