El clean code consiste en principios para lograr código intuitivo y fácil de modificar. Esto se traduce en una secuencia de ejecución lógica, relaciones claras entre partes del código y comprensión inmediata de funciones. Para ser fácilmente adaptable, el código debe ser flexible, ampliable y corregible. Además, debe mantenerse mediante clases y métodos reducidos y con tareas claras, pruebas unitarias y API bien documentadas. Estas prácticas permiten independencia del creador, facilitan la colaboración y simplifican el mantenimiento al hacer que los bugs sean más visibles y corregibles.
Escribir código limpio implica seguir principios esenciales durante el desarrollo de software. No es una cuestión de reglas rígidas, sino de autoevaluación. Esto genera debates en la comunidad de desarrolladores debido a la subjetividad de la limpieza del código. A continuación, se presentan principios ampliamente aceptados de código limpio.
El principio KISS (Keep It Simple, Stupid) promueve la simplicidad en el código, remontándose a la década de 1960 con el ejército estadounidense. Destaca que el código debe ser simple y evitar complejidad innecesaria. Dado que existen múltiples formas de resolver problemas en programación, los programadores deben considerar si podrían hallar soluciones más sencillas aplicando KISS.
DRY (Don't Repeat Yourself) es una extensión de KISS que promueve evitar repeticiones en el código. Según DRY, cada función debe ser única y clara en el sistema de clean code.
El siguiente ejemplo ilustra el principio DRY: El nombre de usuario y contraseña se repiten dos veces en partes del código, es preferible unirlos en una función única en lugar de programarlos separadamente. Esto transforma el código redundante y "húmedo" (WET) en código más eficiente y "seco" (DRY)
//Variante A
let username = getUserName();
let password= getPassword();
let user = { username, password};
client.post(user).then(/Variante A/);
//Variante B
let username = getUserName();
let password= getPassword();
let user = { username, password};
client.get(user).then(/Variante B/);
function getUser(){
return {
user:getUserName();
password:getPassword();
}
}
//Variante A
client.post(getUser()).then(/Variante A/ );
//Variante B
client.get(getUser()).then(/Variante B/);
El principio YAGNI (You Ain't Gonna Need It) del clean code destaca agregar funciones solo cuando sea esencial. Relacionado con el desarrollo ágil, favorece la arquitectura gradual y la resolución eficiente de problemas, en lugar de programar desde un concepto general. El enfoque es resolver problemas subyacentes de manera dinámica para lograr clean code
El código debe ser legible para otros desarrolladores, más aún en proyectos colaborativos, aunque funcione para la máquina. La legibilidad es más vital que la concisión, ya que un código conciso pero incomprensible carece de sentido. Un ejemplo es nombrar las variables de manera adecuada.
Los nombres de las variables siempre deben ser comprensibles. Por ejemplo, no es posible entender la siguiente variable sin una explicación o más información:
int d;
Sin embargo, con el siguiente nombre, la misma variable se explica por sí sola:
int elapsedTimeinDays;