Cada año, una enorme cantidad de tiempo y recursos son perdidos debido a la pobre calidad del código escrito. Los desarrolladores muy a menudo se apresuran a terminar su trabajo rápido, debido a la presión que sienten por parte de sus managers o de los clientes, sacrificando muchas veces calidad del mismo. Este es un gran problema hoy en dia y por ello he decidido escribir un artículo sobre un “ código limpio ”, donde quiero enseñar todos los beneficios de construir un proyecto de software de calidad desde el principio.

 

¿Que es un código limpio?

 

Este artículo quiero empezarlo con una buena frase de Martin Fowler – “Cualquier estupido puede escribir un código que los ordenadores puedan entender. Son los buenos programadores los que escriben códigos que los humanos pueden entender”. Esta frase explica de una manera muy sencilla la esencia de un código limpio.

Cuando hablamos de un código limpio, nos referimos a estilo de desarrollo centrado en el lector, un software que sea fácil de leer, escribir y mantener. El código limpio es uno fácil de entender y cambiar.

La término “limpio” es muy conocido estos días, si nos fijamos en diseño, fotografía, etc. la gente se fija en acabados pulidos y “limpios”, ya que hoy en dia nuestra vida es lo suficientemente complicada y queremos relajarnos y salvar tiempo eligiendo las opciones más claras, sencillas y pulidas.

Tu código ha de ser tan eficiente, legible y mantenible como sea posible, y en vez de corregir el problema, has de poner un poco de tiempo extra en centrarte en el diseño de tu codigo en la arquitectura. La razón es que tu codigo ha de ser entendible y limpio. Esto significa que tu codigo es facil de leer, ya sea el lector el autor original del código o quien sea. No ha de haber dudas o malentendidos. Por ejemplo, lo siguiente ha de estar claro: flow de ejecución de la aplicación, como colaboran entre ellos diferentes objetos, el role y la responsabilidad de cada clase, motivo del método o de cada expresión y variable, etc.

También, es extremadamente importante tener la habilidad de fácilmente extender y refactorizar tu código. Esto se puede conseguir si la persona realizando los cambios entiende el codigo y esta segura de que los cambios introducidos en el código no rompen la actual funcionalidad. Para un codigo ser fácil de cambiar, has de tener en cuenta: que las clases y los métodos sean pequeños y tengan una única responsabilidad, que las clases tengan una API concisa y clara, que las clases y los métodos sean predecibles y trabajen como lo esperado, un código fácil de testear y tenga pruebas unitarias, que los test sean fáciles de entender y cambiar, etc.

Es importante recordar, que un programador que escriba un código limpio, entiende perfectamente el problema antes de escribir el código. Es tan fácil como construir una casa, las bases y la arquitectura son clave! A largo plazo te ayudará a ahorrar tiempo y dinero en proyectos que has de volver a hacer.

 

8 razones por las que mantener un código limpio es importante

 

1. Limpieza
Es fácil olvidar que cada linea de codigo que los desarrolladores de software escriben puede ser leída muchas veces por humanos. Estos normalmente suelen ser compañeros de trabajo. Muchos de ellos están ocupados reparando fallos y añadiendo nuevas características. Por lo que cada desarrollador ha de prestar atención al código y hacerlo lo mas claro y limpio posible. Los desarrolladores son como escritores de libros, los mejores son aquellos que escriben libros fáciles de leer, una historia irresistible. Utilizan capítulos, títulos y parágrafos para organizar de una manera mas sencilla sus pensamientos y guiar al lector a través del libro. Los desarrolladores trabajan de la misma manera, simplemente utilizan clases, métodos… etc.

 

2. Mejores prácticas
Estos últimos años, mejores pràcticas de software como las pruebas unitarias, TDD, CI, etc están teniendo cada vez mas adopción. Estas prácticas elevan la calidad del código y su facilidad de mantenimiento. Implementar los principios de un código limpio es una cosa que vale especialmente la pena cuando llega el momento de refactorizar el código o testearlo. Un código limpio hace que sea más fácil de leer y testear. Si piensas en ello como parte de una casa, “código limpio” son los cementos.

 

3. Logica detras del código
Si alguien te pregunta sobre la calidad de tu codigo, has de aportar una justificación racional. Si nunca has considerado la calidad de tu estilo de codigo de una manera metódica, hay una gran oportunidad de mejora. Aquellos que escriben un código limpio, siguien unos ciertos patrones y técnicas.

 

4. Mantenimiento
Escribir codigo es relativamente facil, poder leerlo es cuando se complica. Esta es la razón por la que muchos desarrolladores prefieren reescribir su codigo antes que realizar el trabajo de entender lo anteriormente escrito. Escribir un código fácil de leer te permite optimizar el 90% del tiempo invertido en ello. Esta es una estrategia más enfocada al ahorro del coste que la alternativa de escribir un código tan rápido como sea posible sin tener en cuenta si es facil de leer o no. También, hace que sea imposible decir “Vaya, este código no es el mio, es el de Juan”. Con un código limpio, no hace falta culpar a los demás por la poca calidad del mismo, codigo limpio es en principio, las bases en las que todos el mundo trabaja. Por lo que, al final, escribiendo un código fácil de mantener, estas optimizando el 70% del tiempo y coste invertido en mantenerlo, en vez del 30% que cuesta escribirlo.

 

5. Facil de testear
Escribiendo un código limpio, se aconseja automáticamente testearlo. Se refiere al desarrollo guiado por pruebas, la cual es la mejor manera de mejorar la calidad de tu codigo, velocidad del equipo y reducir el número de defectos en el software. Todos estos factores tienen un gran peso en el ROI (beneficio de la inversión) del software.

 

6. Simplicidad
Manten tu codigo tan simple y facil de leer como sea posible. No te compliques demasiado, es un error bastante común entre los desarrolladores de software. Manteniéndolo simple puedes producir codigo de gran calidad, solventar problemas más rápido y en general trabajar mejor en los grupos. En Apiumhub, nos encanta los principios KISS, “mantenlo sencillo, tonto”. Igual que DRY, “no te repitas”. Eso permite a los desarrolladores de software evitar duplicados y producir un código mucho mejor comparado con aquellos que utilizan una repetición innecesaria. No añadas caracteristicas extra por si las pudieses necesitar en el futuro. Nunca lo hagas. Es una perdida de tiempo y dinero. No te hace ningun favor. Cuando complicas demasiado el codigo añadiendo caracteristicas extra al código, estas añadiendo complicidad de lectura, entendimiento, mantenimiento y testeo. Solo estas creando “bugs” en tu código. No eres una pitonisa, por lo que se puede dar el caso de que 9 de cada 10 suposiciones sean erróneas. E incluso acertando, puede que solo la necesites al cabo de dos años, para entonces ya habras encontrado una manera mejor de hacerlo. Centrate en MVP.

 

7. Consistencia
Imagina que vas a una tienda y no hay consistencia sobre los productos expuestos. Sería muy complicado encontrar aquello que buscas. El arreglo en el código es más o menos como en el supermercado. Cuando tu código está debidamente utilizado, es más fácil leer y buscar aquello que estás buscando. Especialmente si prestas atención a los nombres de los artículos. Mantener un debido orden en los nombres es extremadamente importante en futuras ediciones del código. Si los nombres son irrelevantes o hay contradicciones en las paginas, variables, funcionalidades, matrices solo te creará problemas en el futuro. Por lo que, llamar a los conceptos por su debido nombre es algo que, aunque simple y obvio, te ayudará en el futuro.
En realidad esto nos guía hacia el siguiente paso de nuestro código limpio, crear un lenguaje común o una “lengua unificada” si te riges por las ideas de Domain Driven Design. Parece una cosa obvia pero no muchos desarrolladores siguen estas pausas.

 

8. Ahorro de costes
Escribiendo un código limpio, consigues todas esas ventajas anteriormente descritas que enfocan hacia un ahorro en costes.

Como conclusión, me gustaría decir que no hay que tener miedo a defender tu código. Construye calidad, software que funciona y tomate el tiempo que haga falta.
Muchos managers defienden los horarios y requisitos con pasión, pero eso es su trabajo. Es trabajo tuyo defender tu codigo limpio con el mismo énfasis. Ya que ayuda a incrementar el valor y reducir los costes de escribir y mantener software. Codigo simple, entendible, leible, testeable y facil de mantener.

Si te interesa saber mas sobre los códigos limpios, te recomiendo que le eches un ojo a estes dos libros de Robert C. Martin:

Clean Code: A Handbook of Agile Software Craftsmanship
Clean Architecture: A Craftsman’s Guide to Software Structure and Design

 

Suscríbete a nuestro newsletter para estar al día de los eventos, meet ups y demás artículos!

 

Si este artículo sobre código limpio te gustó, te puede interesar:

 

F-Bound en Scala

Tendencias en aplicaciónes móviles

Patrón MVP en iOS

Debugging con Charles Proxy en Android emulator

Por qué Kotlin?