En genbeta:dev han lanzado hace un día esta pregunta:
¿Qué herramientas utilizáis para controlar la calidad de vuestro código?
Esta ha sido mi respuesta. Reconozco que me he dejado llevar y al final he hablado un poco de todo. En cualquier caso esta es la respuesta, desordenada y escrita en 5 minutos, pero creo que puede ser útil.
1.-En primer lugar Eclipse bien configurado.
Como por ejemplo nos indica aquí Sanjeev Kumar.
https://sites.google.com/a/javagyan.com/javagyan/useful-tips/usingeclipseeffectively
Esto lo podemos acompañar del algún plugin que nos mire las métricas mientras desarrollamos tipo: CodePro AnalytiX
https://developers.google.com/java-dev-tools/download-codepro
Y terminaría la configuración del eclipse con un conjunto de templates que me faciliten la escritura de cierto tipo de estructuras habituales:
http://eclipse.dzone.com/news/effective-eclipse-custom-templ
2.-Un buen entorno de integración e inspección continua con Jenkins y Sonar.
http://jenkins-ci.org/
http://www.sonarsource.org/
Y el Sonar enriquecido con los siguientes plugins:
- Timeline Plugin
- Useless Code Plugin
- SIG Maintainability Model Plugin
- Quality Index Plugin
- Technical Debt Plugin
http://onlysoftware.wordpress.com/2012/01/01/51-sonar-plugins-you-must-not-miss-2012-version/
Aunque para gestionar la deuda técnica también este estupendo plugin COMERCIAL 😦 que ayuda con la implementación de SQALE)
http://www.sonarsource.com/products/plugins/governance/sqale/
3.- Fomentar de «buen rollo» (no se puede ir diciendo este código es una mierda) entre los miembros del equipo las buenas prácticas.
Recomendando las lecturas de ciertos libros imprescindibles.
- Clean Code.
- The Pragmatic Programmer.
- Refactoring: Improving the Design of Existing Code
- En busca de la excelencia en el código.
- etc.
Y reuniendonos de vez en cuando para analizar ciertas partes del código en equipo.
Reflejar esta información y las conclusiones en un Wiki.
Fomentar cuando sea necesario:
- La programación por pares.
- Y siempre, siempre la revisión por pares. No dar por bueno un código hasta que otra persona no lo ha verificado en su máquina.
4.- Un buen conjunto de test que nos quite el miedo a la refactorización cuando sea necesario.
Técnicas TDD, etc.
5.- Y dejar claro cosas como:
- Las prisas no justifican un mal código.
- Poco a poco, la deuda técnica se acumula en las zonas que ya estaban llenos de deuda.
- La programación puede ser divertida, también lo puede ser la criptografía, sin embargo es recomendable no combinarla.
- «¡No me importa si funciona en tu máquina! ¡No estamos vendiendo tu máquina!».
- Codifica siempre como si la persona que finalmente mantendrá tu código fuera un psicópata violento que sabe dónde vives (Martin Golding).
- etc
Y muchas cosas más…………….
Evidentemente he sido incapaz en los proyectos que he estado de implementar todas estas técnicas o teorías.. pero creo que el concepto esta claro y se podría resumir en estos puntos:
- Formación continua entre los miembros del equipo.
- Fomentar la premisa de buscar la excelencia en el código trabajando en equipo.
- No esconder la información y fomentar el compartirla.
- Fomentar un buen entorno de trabajo: Gamification (http://vimeo.com/32435331)
- Y automatizar la generación e inspección del código.
Un saludo.
Debe estar conectado para enviar un comentario.