jueves, 26 de marzo de 2009

Programando con estilo

Antecedentes

Tradicionalmente el desarrollo de software ha sido una actividad individual. Muchos proyectos se llevaban a cabo con la participación de un único programador, o dos a lo sumo, que se encargaban de todas y cada una de las fases del proyecto. A medida que las necesidades de los usuarios han ido aumentado y la tecnología avanzando, el ámbito de los proyectos ha crecido, y con ello la necesidad de añadir más participantes (no sólo programadores sino también otros roles) al proceso de desarrollo de software. Este cambio, el paso de trabajar individualmente a trabajar en equipo, requiere un esfuerzo por parte de las personas involucradas, pero es especialmente importante el impacto que tiene en los programadores (se pasa de un programador que controla todas y cada una de las partes del código a un mismo código que puede ser modificado por varios individuos a la vez) Para solucionar este problema se empezaron a utilizar herramientas cómo el control de versiones, pero no basta con esto. Problemas cómo la poca documentación en el código, la poca estructuración, nomenclaturas extrañas... dificultan la legibilidad del código cuando un programador tiene que modificar código realizado por otro (o incluso cuando se tiene que tocar código realizado por uno mismo tiempo atrás) Esto acaba repercutiendo en una menor productividad de los desarrolladores hace los códigos poco reusables,escalables, etc.
Para solucionar esto se necesita organización y disciplina por parte de los implicados y es aquí donde puede entrar en juego la Guía de estilo.


¿Qué es?

Una guía de estilo no es mas que la definición de una serie de pautas que han de seguir los programadores cuando estén creando o modificando código. Una guia de estilo hace incidencia en cómo debe presentarse el código, o sea en la forma y no en el fondo del mismo. Pero cómo ahora veremos, esto tiene un importante impacto en cómo va a funcionar el mismo.


Las pautas que puede dictar una guía de estilo son muchas, desde cómo debe indentarse el código, a cómo se deben nombrar las variables, funciones, métodos, clases u objetos que aparecen en el código. También son muy importantes los comentarios realizados en él, y más si estamos trabajando en el ámbito de una metodología ágil donde el código se considera parte esencial de la documentación del proyecto.

¿Que nos aporta?

A priori se puede pensar que aplicar una guia de estilo al código de nuestros proyectos es simplemente una herramienta de “burocratización” que lo único que hará será más lenta y tediosa la tarea de programar (muchos programadores son reacios a ello, sobretodo los que estan acostumbrados a trabajar de manera individual), pero la realidad es bien distinta. La principal aportación de “estandarizar” el código es el incremento de la legibilidad por parte de todos los desarrolladores, haciendo que disminuya el tiempo que una persona necesita para entender el código, ganando tiempo al codificar (al asimilar las reglas de nombrado de clases, variables, etc, se pierde menos tiempo), facilitando la refactorización, lo que puede llevar a incrementar la escalabilidad del código, la reusabilidad, la modularidad, la facilidad para la generación de testos unitarios,etc.


Toda esta serie de mejoras que se pueden conseguir acaban impactando en dos factores clave para cualquier proyecto de software:
● La calidad del código
● La productividad de los programadores


Ejemplos

Algunos ejemplos de Guias de Estilo que podems encontrar en Internet pueden ser los siguientes:

Guia de estilo para el diseño de aplicaciones .NET - http://msdn.microsoft.com/es-es/library/czefa0ke(VS.71).aspx
Guía de estilo Philips Medical Systems(C#) -http://www.tiobe.com/content/paperinfo/gemrcsharpcs.pdf
Guía de estilo programación en Java - http://java.sun.com/docs/codeconv/
Guía de estilo Mono: http://www.mono-project.com/Coding_Guidelines
Guía de estilo para el nucleo de Linux: http://lxr.linux.no/linux/Documentation/CodingStyle


Para empezar no se debe intentar implantar una guia de las dimensiones y el alcanze de las aquí mostradas. Es mucho mejor empezar con pocas reglas y irla adaptando y ampliando a medida que sea posible y/o necesario.

Conclusiones

Cómo se puede ver una guia de estilo es una excelente manera de “estandarizar” el código de los proyectos de desarrollo de software, estandarización que puede impactar muy positivamente en la productividad y la calidad de los desarrollos siempre y cuando realmente se aplique a la hora de las implementaciones.
La poca predisposición por parte de muchos desarrolladores a que “les digan” cómo deben hacer su código, y la dificultad para realizar un control de manera eficiente (puede ser peor el remedio que la enfermedad) hacen que la implantación de una guia de estilo de manera que tenga un impacto real sea dificil. Si por el contrario los desarrolladores ponen de su parte y se puede llevar a cabo un control que imponga burocracia 0 (hay herramientas que permiten este control de manera sencilla) para hacer que el código cumpla con la guía los beneficios que aportará al proyecto serán muchos e importantes
.

No hay comentarios: