Crónicas del Buen Programador: No Te Repitas
El mantenimiento de un sistema difícilmente comienza el día que es implantado, en realidad el mantenimiento comienza el primer día y continúa todos los días que trabajamos en un sistema. Nuevos requerimientos, y mejor entendimiento de lo que estamos haciendo colocan al programador en constante refactorización de aquello que esta siendo creado, el mantenimiento es una actividad de rutina, parte de todas las fases del ciclo de desarrollo.
Como programadores, coleccionamos, organizamos, mantenemos y utilizamos el poder del conocimiento. Documentamos conocimientos en especificaciones, y hacemos que éstas cobren vida escribiendo código ejecutable. Estos conocimientos del sistema son necesarios inclusive para crear pruebas en el mismo. Si no aprendemos a administrar como introducimos conocimiento al sistema podemos vernos en problemas rápidamente.
Cuando hacemos mantenimiento, muchas veces debemos encontrar y cambiar la representación de cosas, de cápsulas de conocimiento dentro de la aplicación, en este proceso es muy fácil duplicar esos conocimientos en diferentes partes del sistema y cuando eso sucede estamos invitando una pesadilla para el futuro mantenimiento, mucho antes de que la aplicación sea implantada.
La única manera de crear software de forma confiable y de hacer que nuestro desarrollo sea más fácil de entender y de mantener es seguir un principio que en inglés se le conoce como el “DRY Principle”.
DRY: Don’t Repeat Yourself (¡No Te Repitas!)
Cada pieza de conocimiento debe tener una representación única, autoritaria y sin ambigüedades dentro del sistema.
Una vez que repites esa representación de conocimientos (reglas, procesos, rutinas) debes acordarte de dónde la pusiste, si las especificaciones cambian, o encuentras una mejor forma de hacer las cosas, o te diste cuenta que hiciste algo que no debías, tienes que cambiar en todos los lugares donde existe. Si no lo haces, vas a tener un sistema que se comporta de una forma en unas ocasiones, y de otra forma en otras, porque utiliza estas representaciones inconsistentes, tendrás un sistema inconsistente.
Obsesiónate con este principio, cada vez que veas tu editor de texto, y veas que estás repitiendo algo, haciendo mucho “copy & paste” de una serie de ifs para ponerlos en dos o tres métodos diferentes, o si varias clases lucen muy similar, tal vez es momento de detenerte y hacer una refactorización para colocar todo eso en un sólo lugar y reutilizar esa lógica, pensar en herencia, clases abstractas o cualquier recurso que te permita concentrar todo eso en un sólo sitio. Esta obsesión probablemente te hará pensar en este principio en otras cosas no relacionadas a programación, y tendrá sentido. Este es quizás el mejor consejo que puedo darte en todas las crónicas. No Te Repitas.
¿Cómo surge la duplicación?
La duplicación puede parecer impuesta. El desarrollador puede pensar que el sistema parece requerir duplicación.
La duplicación puede ser involuntaria. El desarrollador puede no darse cuenta de que está duplicando información.
La duplicación por impaciencia. El desarrollador puede tener flojera y duplicar porque parece lo más fácil. Eventualmente esto le morderá en el trasero.
La duplicación por falta de coordinación. Múltiples desarrolladores en un equipo o diferentes equipos pueden duplicar información.
Hazlo fácil de reutilizar
Debes intentar hacer que todo lo que escribes sea fácil de utilizar. Esto empieza por hacer que tu código esté organizado y que sea intuitivo para los miembros de tu equipo el navegar y encontrar lo que ya pudiera existir en el sistema.
Sobre el Autor
Angel León (aka Gubatron) es un Ingeniero de Software Venezolano (UCAB) que ha desarrollado desde sencillos sistemas con bases de datos relacionales, servicios webs distribuidos para millones de visitantes mensuales, software p2p de uso masivo, hasta aplicaciones para dispositivos mobiles, todo esto empleando gran variedad tecnologías abiertas (Linux, Android, Java, Python, PHP, C++, Javascript).
Estas crónicas son inspiradas en el libro “The Pragmatic Programmer” (un libro que debería ser un texto obligatorio en todo curso de Ingeniería de Software) junto con las experiencias de Angel León durante los últimos 8 años desarrollando software en Venezuela y los Estados Unidos.