El clean code no son reglas estrictas, sino principios que te ayudan a escribir código claro y fácil de modificar. La idea es que cualquier desarrollador pueda entenderlo sin problemas. Para que sea fácil de adaptar, debe tener:
Los nombres de variables y funciones claros y descriptivos son la base.
Olvídate de los 'x' y 'tmp', y nombra cada cosa con un sustantivo que claramente lo identifique.
Por ejemplo, si tienes una variable que hace un fetch de información
// Mal:
const data = await getCharacters();
// Bien:
const character = await getCharacters();
Los comentarios son como los post-it de la nevera: ¡útiles, pero no abuses de ellos!
Un buen código, que se ha creado siguiendo principios de clean code, debería de poder explicarse solo
Cada función debe estar centrada en un objetivo específico y nada más que eso. Nada de tener funciones infinitas que lo hacen todo.
Por ejemplo, si tienes una función hacerReceta(), no implementes toda la lógica ahí dentro. Crea sub funciones como comprarIngredientes(), pelarPatatas(), encenderSarten(), etc, que sean llamadas dentro de la función principal
Cuando en el código empezamos a anidar condicionales, es como crear un laberinto que complica la lectura y el mantenimiento.
A medida que las condiciones crecen, el código se vuelve más confuso y propenso a errores, ya que debemos seguir múltiples ramificaciones antes de llegar al final. Aquí es donde las guard clauses (o cláusulas de guarda) entran en juego.
// Ejemplo con guard clauses:
function procesar_orden (orden){
if(orden) {
console.log("La orden es inválida.")
return
}
if(orden.pago_completado()) {
console.log("El pago no está completado.")
return
}
if(orden.stock_disponible()) {
console.log("No hay stock disponible.")
return
}
console.log("Procesando la orden...")
// Lógica para procesar la orden
}
Al escribir código, es importante mantener un estilo uniforme en todo el proyecto.
Esto significa que si decides seguir ciertas convenciones o reglas (como nombres de variables, uso de espacios, formato de funciones, etc.), debes mantenerlas en todo tu código.
Cambiar de estilo a mitad de camino puede hacer que el código sea confuso, difícil de leer y más propenso a errores.
// Código con estilos uniformes:
function calcular_area_rectangulo(base, altura){
const area = base * altura
return area
}
// Código con estilos mezclados:
function calcularAreaRect(base, altura){
const Area = base * altura;
return Area
}
No repitas código innecesariamente cuando puedes reutilizar y abstraer lógica.
Si ya tienes una funcionalidad en un lado, y ahora necesitas usarla en otro, no repitas el código, extráelo a un sitio común, y úsalo en ambos.
No intentes sorprender o demostrar lo mucho que sabes con códigos ultra complicados.
La simplicidad siempre es mejor y es más fácil de mantener.
Un/a buen/a desarrollador/a siempre debe buscar la solución más eficiente, sencilla y mantenible, no la más complicada.
Si tu código fuera un libro,
¿sería fácil de leer?
Usa espacios y sangrías adecuadamente.
La lógica técnica (como la conexión a bases de datos, la configuración de servicios externos o la gestión de APIs) debe estar contenida en secciones bien definidas del sistema, y no mezclada con la lógica de negocio.
En lugar de meter números a pelo en tu código, define constantes para referenciarlos.
// Ejemplo (antes y después):
// # 10% discount
function calculate_discount(price) {
const discount = price* 0.1
return price - discount
}
function calculate_discount(price) {
const TEN_PERCENT_DISCOUNT = 0.1
const discount = price * TEN_PERCENT_DISCOUNT
return price - discount
}