Saltar al contenido
Foto de José Luis Iglesias

C# .NET Azure
Software Craftsperson
Inteligencia Artificial

Buenas Prácticas en Programación: TDD, Clean Architecture, DDD, Refactoring, Clean Code
Las 5 buenas prácticas en programación.

¿Buenas Prácticas? ¿Para Qué las Necesito?

Tu código funciona, pero cada vez es más difícil de modificar y ampliar. Cada nueva funcionalidad requiere de muchos cambios, de más tiempo, de más desarrolladores. ¿Te suena?

Las buenas prácticas en programación son un conjunto de pautas sencillas que permiten hacer programas fáciles de modificar y de ampliar. Tus jefes y clientes estarán más contentos, reduciendo costes y aumentando beneficios. ¿Te gustaría?

TDD: Programación Dirigida por Tests

Primero, convierte los casos de uso en tests automatizados, que se lanzarán cada vez que tengas que cambiar código o que tengas que lanzar una nueva versión a producción.

Las pruebas te irán indicando el código que debes escribir, el justo para pasar el test. Además, te permitirá refactorizar el código sabiendo que no estás rompiendo nada que ya funcionase.

Tendrás todo tu código cubierto con pruebas, reduciendo muchísimo la cantidad de errores en tu programa. Dedicar tiempo a hacer tests te ahorra una cantidad enorme de tiempo en corregir bugs.

TDD: Diseño Dirigido por Pruebas
Los 3 estados por lo que pasa cada ciclo de desarrollo en TDD.
Pirámide con Unit tests, Integration Tests y GUI Tests
Los tipos de tests más comunes, aunque existen muchos más.

Hoy día es imprescindible que todo software sea probado automáticamente cada vez que se compile y despliegue:

  • Tests Unitarios
  • Tests de Integración
  • Tests de Aceptación
  • Tests Funcionales
  • Tests de Rendimiento
  • Tests End-to-End (GUI) ✅
  • Tests de Regresión
  • Tests de Carga
  • Tests de Seguridad
Diagrama resumen de Clean Architecture
Relaciones de componentes de las arquitecturas limpias, como la Hexagonal y la Onion.

Clean Architecture

Para organizar tu código, utiliza una arquitectura limpia. Esta pone la lógica de tu negocio en el centro, para poderlo reutilizar desde cualquier lado, ya sea una web o una app móvil.

Los componentes de cada círculo podrán hacer uso de los componentes de sus círculos interiores, pero nunca al revés. Define interfaces para inyectar desde afuera lo que necesites en los círculos internos.

Esto no solo permite que los tests sean mucho más fáciles de hacer, sino que te permitirá cambiar de base de datos, sistema de logging o interfaz de usuario sobre la marcha, incluso en tiempo de ejecución.

Otra forma de independizar componentes para poderlos gestionar de forma separada es que el dominio lance eventos que sean gestionados por los círculos más externos.

El acoplamiento será mínimo y cada equipo de desarrolladores podrá desarrollar sus componentes de forma independiente.

DDD: Diseño Dirigido
por Dominio

Tener el código bien organizado te va a permitir modificar las reglas de negocio de una forma rápida y limpia, además de facilitar la creación y mantenimiento de los tests.

Dividir tu dominio en diferentes contextos aislados es fundamental para poder independizar los desarrollos. No es lo mismo una entidad Cliente para el departamento de Marketing que para el de Facturación.

Diagrama DDD - Domain-Driven Design
Todos los conceptos del DDD y cómo están relacionados.
Clean Code vs Malos Olores
Comparación de malas prácticas a evitar y buenas prácticas a seguir.

Refactoring
y Clean Code

El código lo vas a escribir una vez, pero lo vas a leer cientos de veces. Aunque tu programa funcione, no significa que hayas terminado el trabajo. Hay que revisarlo y reescribirlo para que sea fácil de leer, sencillo de modificar y, sobre todo, evitar duplicidades.

No tengas miedo a hacer cambios. Recuerda que todo el código estará cubierto por los tests: si rompes algo, te avisarán enseguida.

Establecer una guía de estilo, usar nombres descriptivos según la terminología del dominio o mantener tus clases y métodos relativamente pequeños son algunas de las claves para un desarrollo sostenible.

Inteligencia Artificial y Machine Learning

Hay problemas para los que no hay una solución directa. En esos casos, usamos algoritmos basados en aproximaciones sucesivas que van reduciendo poco a poco el error cometido.

A este proceso lo llamamos aprendizaje automático (machine learning) y al conjunto de este tipo de algoritmos le llamamos inteligencia artificial.

Desde 2015 tengo el canal en YouTube «Descubriendo la Inteligencia Artificial», donde he publicado más de 200 vídeos con algoritmos de machine learning y teoría sobre inteligencia artificial en general.

Inteligencia Artificial vs. Machine Learning vs. Deep Learning
Relación entre inteligencia artificial, machine learning y deep learning.

Empresas que Han Confiado en Mí

Contacta Conmigo