La eficiencia en la codificación se convierte en un factor demasiado importante para desarrollar un software de calidad, que podamos mantener durante un largo tiempo y se pueda escalar para cumplir con las necesidades especificas del proyecto. En este apartado vamos a explorar las mejores practicas para escribir código limpio y eficiente, además, las herramientas mas populares para poder garantizar estas buenas practicas.
Introducción
- Velocidad de ejecución
- Código fácil de entender
- Fácil mantenimiento
- Escalabilidad
Buenas Practicas para Escribir Código
Código Limpio: ¿Qué es?
- La ejecución del código sigue una lógica y estructura definida.
- La relación entre distintas partes del código es fácil de entender y observar.
- La tarea de cada clase, función, método y variable puede comprenderse fácilmente
Escribe Código Limpio
- Nombres claros y descriptivos. Se debe utilizar nombres de variables y funciones que se puedan entender y describan el propósito.
- Funciones simples: Debemos mantener el principio de que cada función cumpla una única tarea.
- Evitar duplicados: Es importante reutilizar código y evitar que este se repita.
- Comentarios Útiles: El código por si solo debe entenderse, los comentarios son solo una ayuda para explicar funcionalidades complejas y muy especificas.
Adoptar Buenas Practicas de Diseño
- Lo más sencillo posible: KISS
KISS (viene del ingles "keep it simple, stupid" o en español "que sea sencillo, estúpido") es uno de los principios del código limpio mas antiguos. El cual recuerda a los desarrolladores que el código debe ser lo mas sencillo posible, eliminando complejidades innecesarias.
Sabemos que no existe solo una solución para un problema, siempre se van a utilizar diferentes soluciones, tecnologías o distintos pero se debe buscar eliminar complejidades y mantenerlo sencillo. - Evitar repetir sin motivo: DRY
DRY (viene del ingles "don't repeat yourself" o en español "no te repitas") el cual nos dice que cada función debe tener una representación única con el fin de evitar repetir sin motivo. - Eliminar lo innecesario: YAGNI
YAGNI (viene del ingles "you aren’t gonna need it" o en español “no lo vas a necesitar”) continua el principio de que solo se debe añadir funciones al código cuando sea estrictamente necesario.
Esta relacionado con los métodos del desarrollo ágil, en el cual se comienza a programar partiendo de un concepto general, desarrollando paso a paso para poder reaccionar al problema de manera dinámica.
Legible antes que conciso
Code Smells
- Falta de modularidad.
- Métodos largos.
- Clases con muchas responsabilidades.
- Funciones con mas de una tarea.
- Codigo duplicado.
- Lógica condicional excesiva.
- Complejidad innecesaria.
- Nombre de variables y funciones poco descriptivos.
Refactorización
Tenemos también otro proceso en el cual buscamos mejorar el diseño de el código implementado sin modificar su comportamiento, en este proceso incluimos el simplificar el código, eliminar duplicados y en general mejorar la estructura. Además, se busca aplicar y garantizar la aplicación de los principios básicos mencionados.
La refactorización debe realizarse como una serie de pequeños cambios, cada uno de los cuales hace que el código existente sea ligeramente mejor sin dejar el programa en funcionamiento.
Un factor muy importante es que todas las pruebas existentes deben superarse después de la refactorización. El objetivo principal de la refactorización es luchar contra la deuda técnica. Transforma un desastre en código limpio y diseño simple.
Herramientas para Facilitar el Desarrollo
Control de Versiones
Análisis y Formato de Código
- Linters: Ayuda a identificar y corregir errores de estilo y posibles errores de programación.
- Formatters: Puede formatear automáticamente el código para que se adapte a unos estándares que tengamos establecidos.
Pruebas
- Framework de Pruebas: Tenemos distintos frameworks que nos brindan herramientas para que podamos garantizar el funcionamiento de código como se espera. Por ejemplo, podemos usar JUnit para Java, PyTest para Python o Jest para JavaScript.
- Pruebas Unitarias: Además, también podemos usar el formato de funciones individuales, con las cuales podemos garantizar que nuestro sistema funcione bien, recordemos que son pruebas que realizamos manualmente.
Integración Continua
- CI/CD: Tenemos herramientas para poder automatizar el proceso de construcción, de pruebas y de despliegue de nuestra aplicación para garantizar la eficiencia y mitigar errores. Además permitir un despliegue continuo sin errores. Podemos usar herramientas como Jenkins, GitHub Actions, Travis CI.
Comentarios
Publicar un comentario