DEV Community

The Eagle 🦅
The Eagle 🦅

Posted on

Clean Code vs Mejores Prácticas: ¿Cuál es la Diferencia?

En el desarrollo de software, "Clean Code" y "Mejores Prácticas" son dos conceptos importantes. A veces podrías escuchar comentarios como "Buen trabajo, tu código se ve limpio" o "Aplica mejores prácticas para evitar la deuda técnica la próxima vez". Aunque se superponen, cada uno juega un papel único en la creación de software de alta calidad y mantenible. Vamos a desglosar lo que significa cada término, explorar algunos ejemplos ilustrativos y ver cómo difieren.

¿Qué es "Clean Code"? 📚

"Clean Code" es un libro de Robert C. Martin (Uncle Bob) que proporciona directrices para escribir código que sea fácil de leer, entender y mantener. Aquí hay ocho principios clave que debes conocer:

1. Nombres Significativos: Los nombres deben describir claramente lo que hace una variable, función o clase.

  • Ejemplo: En lugar de x, usa userAge si representa la edad de un usuario, y en lugar de calculate, escribe lo que calcula la función.
   // Malo
   function calculate(x: number): number {
       return x * 12;
   }

   // Bueno
   function calculateUserAgeInMonths(userAge: number): number {
       return userAge * 12;
   }
Enter fullscreen mode Exit fullscreen mode

2. Regla del Boy Scout: Deja el código mejor de lo que lo encontraste. Refactoriza y mejora a medida que avanzas.

  • Ejemplo: Si corriges un error y ves código desordenado, límpialo antes de hacer el commit.
   // Antes
   function fetchUserData(userId: string): any {
       const data = getDataFromDatabase(userId);
       return data;
   }

   // Después
   function fetchUserData(userId: string): User {
       return getDataFromDatabase(userId).user;
   }
Enter fullscreen mode Exit fullscreen mode

3. Reducir el Acoplamiento: Minimiza las dependencias entre clases para hacer tu base de código más modular.

  • Ejemplo: Usa inyección de dependencias en lugar de codificar las dependencias directamente.
   // Malo
   class UserService {
       private database: Database;

       constructor() {
           this.database