¿Por qué la calidad del código es tan importante para los desarrolladores?
La calidad del código puede traducirse en cuán útil y fácil de mantener es su código: el código de alta calidad se puede reutilizar y desarrollar de nuevo; el código de baja calidad no dura.
Los proyectos a menudo son una carrera contra reloj y el presupuesto es tan ajustado que contar con un par de manos más para escribir código es una quimera. Cortar las esquinas puede parecer la salida fácil, pero no pagará a largo plazo.
El código bien estructurado, siguiendo las reglas del idioma, es mucho más fácil de leer y entender por diferentes navegadores y otros desarrolladores. También es más fiable y evita futuras repeticiones de trabajo.
Los proyectos de software pueden estar sujetos a diferentes restricciones en diferentes etapas (desde requisitos hasta análisis, desarrollo, pruebas, implementación y mantenimiento) que a veces pueden llevar a que el código en sí se maneje como el aspecto menos importante (función sobre forma). Sin embargo, una de las propiedades más importantes — y a menudo olvidadas — de un buen software es su calidad de código.
La calidad del código se puede medir de varias maneras diferentes, pero algunos de los aspectos más importantes son:
- Legibilidad, consistencia: lo fácil que es leer y comprender secciones del código; esto incluye claridad de código, simplicidad y documentación.
- Previsibilidad, fiabilidad y robustez: el comportamiento del software debe ser predecible y no propenso a errores ocultos.
- Capacidad de mantenimiento y extensibilidad: la fijación, actualización y mejora del software debe ser lo más simple posible, no inherentemente compleja.
¿Por qué importa realmente la calidad del código?
Dadas las restricciones habituales ya presentes en el desarrollo de software, ¿por qué debería ser tan importante el esfuerzo por producir código de calidad?
Escribir código de calidad no debe considerarse como una tarea que requiere mucho tiempo, sino como uno de los principales objetivos al desarrollar software; debe considerarse como una inversión esencial en la que el rendimiento seguirá casi de inmediato:
- El código que es altamente legible, consistente y documentado es más fácil de revisar, lo que lleva a un esfuerzo de desarrollo mucho menor.
- El código limpio y elegante también es mucho más fácil de entender, mantener y ampliar.
- El software que está bien diseñado y logra una menor complejidad de código también se beneficia mucho en términos de capacidad de prueba y robustez (menos propenso a la introducción de nuevos errores).
En esencia, una alta calidad de código es una de las formas más efectivas de reducir la deuda técnica.
Déjame mostrarte un ejemplo
El código de mala calidad generalmente puede ser causado por:
- Falta de (o insuficiente) estilo/estándares de codificación.
- Documentación nula o deficiente.
- Arquitectura mal diseñada (sin separación de responsabilidades, como en MVC).
- Alta complejidad del método
En el siguiente ejemplo, el propósito del método no puede identificarse claramente sin un examen cuidadoso:
- No hay documentación de funciones, ni líneas de comentarios, y no se sigue ningún estándar de codificación aparente (visto, por ejemplo, en el uso de corchetes y líneas vacías).
- La complejidad es relativamente alta debido al número de diferentes acciones y procesos (consultas de base de datos, vista/salida y lógica de negocio), múltiples niveles de anidamiento.
- Hay una inconsistencia en las formas de realizar la interpolación de salida y variable.
Dada su baja calidad, el código es propenso a errores/bugs (sin mencionar los problemas de seguridad), y difícil de probar correctamente.
Además, cualquier cambio en el software probablemente resultará en un mayor esfuerzo de desarrollo y prueba y aún así resultará en la introducción de nuevos errores potenciales.
En el lado opuesto, seguir un estándar de codificación y documentar el código es un aspecto clave de la calidad.
Se puede ver un ejemplo aleatorio de esto en la siguiente imagen, una sección del Controlador FrameworkBundle de Symfony.php:
Además el método o parámetro de la documentación, podemos ver claramente que:
- El código es simple y auto-explicativo.
- Las diferentes secciones lógicas están separadas por líneas vacías.
- Hay pocos niveles de anidación/sangría, con declaraciones de retorno tempranas.
- Hay consideraciones de diseño adecuadas (separación de responsabilidades por diferentes objetos/clases).
- Debido a la alta calidad y claridad del código, la clase/método debe ser fácil de probar y mantener, con poco esfuerzo; la probabilidad de que ocurran errores también debe ser extremadamente baja.
¿Cómo se puede lograr una alta calidad de código?
Aquí hay algunos consejos:
- Elegir un estándar de codificación (estilo) apropiado para el lenguaje o marco de trabajo. Para PHP, por ejemplo, PSR-2 puede considerarse como la recomendación estándar actual. Es posible integrar las herramientas de CS fixer con su entorno de desarrollo (consulte php-cs-fixer)
- La consistencia en los nombres de clases, métodos y variables es otro factor importante de legibilidad.
- Asegurarse de documentar correctamente las clases, propiedades, métodos y bloques de código particulares cuando sea necesario, asegurando que los comentarios sean simples, concisos y efectivos.
- Refactorizar y elegir patrones de diseño correctos es una buena manera de promover la reutilización y extensibilidad del código, y lograr una complejidad de clase/método menor.
- Agregar herramientas de análisis de código al entorno de CI, que se ejecutarán antes de fusionar nuevos cambios. Para PHP, phpmd y / o phpstan son herramientas que pueden advertir de posibles problemas en el código y tienen un número de reglas configurables diferentes.
- Las pruebas automatizadas son otro elemento imprescindible; no solo ayudará a prevenir nuevos errores, sino también a garantizar que cumple con los requisitos y responde correctamente a diferentes entradas.
- Finalmente, aprovechar herramientas como scrutinizer-ci y Codacy para probar y mostrar una visión general clara de la calidad de un proyecto a lo largo del tiempo, y detalles importantes sobre qué y dónde están los problemas.
Bottom line
Independientemente de las metodologías de desarrollo, los lenguajes, los marcos de trabajo o las herramientas, la aplicación de una alta calidad de código es una forma de lograr un desarrollo, pruebas y mantenimiento más rápidos y sencillos, lo que se traduce en una reducción de los costos de propiedad del software.
Escrito por João Inácio | Desarrollador Senior y Líder de Equipo en Cleverti
Este artículo fue publicado originalmente en el Blog de Cleverti