Legacy Code… que levante la mano quien no lo sufrio April 24, 2008
Posted by cpaez in agile, coding, practices.Tags: bat
add a comment
Creo que todos los desarrolladores en algún momento de sus carreras tuvieron que lidiar con codigo “ajeno”, de un sistema que ya esta funcionando (bien o mal), el llamado “Legacy Code”. Recordar estos casos me hacen pensar en ciertas cosas indispensables:
- En el primer momento intentar recabar todo tipo de info acerca de la aplicación. Comprender el modelo del negocio.
- No tomarlo por piezas de código, como dicen los anglos “see the big picture”.
- No suponer nada, osea… todo necesita un test para verificar su funcionamiento. Si existe un unit test, correrlo… si no existe, crearlo…
Existe un acercamiento para este tipo de tareas, llamado “BAT”, que viene de los terminos Build-Automate-Test, y se basa principalmente en el concepto de Integración Continua.
Tiene como primer objetivo poner énfasis en facilitar el proceso de Build de la aplicación, tarea que se pone más difícil a medida que el tamaño del proyecto y del Team aumenta.
Para esto existen herramientas como: Cruise Control, AnthillPro, que nos permiten automatizar el proceso de Build y Test de la aplicación en un determinado momento que puede ser, en el preciso instante donde un integrante del equipo hace un Chek-In/Commit de código al repositorio de fuentes ó en una tarea programada periódicamente, entre otras.
Junto con este proceso más la creación de Unit test A MEDIDA QUE VAMOS CODIFICANDO, minimizamos la cantidad de código que no se somete a test. A esto se puede sumar algunas pruebas superficiales en diferentes partes de la aplicación (Smoke Test) para ir verificando anomalías en forma temprana.
Esta técnica nos ayudará a zambullirnos en el código ajeno con mayor confianza, ya que los test automatizados nos servirán para no romper hacia atrás y poder preocuparnos por la calidad del código que estamos escribiendo en este momento.
Links relacionados:
Wikipedia: Continuous Integration
http://en.wikipedia.org/wiki/Continuous_Integration
Martin Fowler: Continuous Integration
http://martinfowler.com/articles/continuousIntegration.html
Libro; Working Effectively with Legacy Code:
http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052