Código Limpio
Vemos esta palabra bastante en la documentación de SonarQube, así que vale la pena explicarla mejor.
El objetivo es lograr un código que respete las reglas del código limpio, ¿y qué significa esto? Significa que el código necesita alcanzar ciertos atributos de consistencia, intencionalidad, adaptabilidad y responsabilidad.

Consistencia
El código debe ser uniforme y convencional. Todo el código debe parecer similar y seguir un patrón regular.
- Formato
- Igual entre todos los que contribuyen a un proyecto. Algunas personas usan 4 espacios para diferenciar bloques en un archivo YAML y otras usan 2.
- Es bueno utilizar un linter para lograr este objetivo.
- Convencional
- Utilizar las características del lenguaje apropiadamente.
- Identificable
- Los nombres de variables, funciones, etc. siguen un patrón basado en la convención del lenguaje.
Intencional
Código preciso y con propósito donde cada instrucción tiene sentido.
-
Limpio y Claro
- El código es autoexplicativo y escrito directamente sin ambigüedades.
-
Lógico
- Instrucciones bien formateadas y sólidas. Libre de contradicciones y comandos impredecibles o cuestionables.
-
Completo
- Código utilizado apropiadamente, siendo funcional y alcanzando objetivos implícitos. Por ejemplo, una función que recibe varios parámetros pero funciona con la mitad de ellos.
-
Eficiente
- Utiliza recursos sin desperdicios, priorizando opciones más económicas para el uso de memoria, procesador, disco y red.
Adaptabilidad
El código está estructurado para ser fácil de evolucionar y desarrollar con confianza. Facilita extender o reutilizar sus partes y promueve cambios localizados sin efectos secundarios no deseados.
- Enfocado
- El código tiene un alcance único y específico. Las unidades hacen lo que tienen que hacer sin acumulación de instrucciones o complejidad.
- Distinto
- Cada parte hace lo que necesita hacer sin duplicación indebida de código.
- Modular
- Código organizado con separación entre sus partes, con las relaciones dentro del código bien gestionadas.
- Testeado
- Tiene cobertura de pruebas
Responsabilidad
Tiene en cuenta las obligaciones éticas con respecto a los datos.
-
Legal
- Respeta las regulaciones de licencias y derechos de autor ejerciendo los derechos del creador y honrando los derechos de otros a licenciar su propio código.
-
Confiable
- Preserva información privada y sensible. Usar credenciales dentro del código es un gran ejemplo de esto.
-
Respetuoso
- No utiliza lenguaje discriminatorio y ofensivo.