Regla
Evite profundo anidamiento niveles.
En profundo hace que código difícil de leer y entender.
Idiomas admitidos: 45+Introducción
El código con cuatro, cinco o seis niveles de anidamiento crea una carga cognitiva que ralentiza el desarrollo. Cada nivel de anidamiento dificulta el seguimiento de las condiciones activas, las rutas de error y la lógica de negocio. El anidamiento excesivo a menudo indica abstracciones perdidas u oportunidades para utilizar retornos tempranos y cláusulas de guarda.
Por qué es importante
Mantenimiento del código y riesgo de errores: El anidamiento profundo crea "código flecha" que empuja la lógica fuera de la pantalla, ralentizando la revisión del código. Los desarrolladores pasan por alto casos extremos al modificar el código anidado porque no pueden ver todas las condiciones que deben cumplirse. Los cambios que parecen correctos de forma aislada pueden romper suposiciones hechas varios niveles más arriba.
Complejidad de las pruebas y la depuración: Cada nivel de anidamiento duplica los casos de prueba necesarios para la cobertura, creando una explosión exponencial de rutas. Las trazas de pila de los errores no muestran qué condiciones los han provocado, lo que dificulta su reproducción.
Ejemplos de códigos
❌ No conforme:
function processOrder(order) {
if (order) {
if (order.items && order.items.length > 0) {
if (order.customer) {
if (order.customer.address) {
if (order.paymentMethod) {
if (validatePayment(order.paymentMethod)) {
return submitOrder(order);
}
}
}
}
}
}
return { error: 'Invalid order' };
}
Por qué está mal: Seis niveles de anidamiento dificultan ver la lógica de negocio real (envío de pedidos) enterrada en la parte inferior. Cada comprobación de condición añade otra capa de indentación, y la gestión de errores no está clara porque no hay indicación de qué validación específica falló.
✅ Conforme:
function processOrder(order) {
if (!order) {
return { error: 'Order is required' };
}
if (!order.items || order.items.length === 0) {
return { error: 'Order must contain items' };
}
if (!order.customer?.address) {
return { error: 'Customer address is required' };
}
if (!order.paymentMethod || !validatePayment(order.paymentMethod)) {
return { error: 'Invalid payment method' };
}
return submitOrder(order);
}
Por qué es importante: Las cláusulas de guarda con retornos anticipados aplanan el anidamiento a un solo nivel. Cada validación es explícita y devuelve un mensaje de error específico. El camino feliz (envío del pedido) es visible al final sin ningún anidamiento. El código es autodocumentado y fácil de modificar sin romper las condiciones existentes.
Conclusión
Mantenga los niveles de anidamiento en tres o menos siempre que sea posible. Utilice retornos anticipados, cláusulas de guarda y funciones de ayuda para aplanar las estructuras anidadas en profundidad. Si el anidamiento supera los tres niveles, es una señal para refactorizar extrayendo métodos, invirtiendo condiciones o replanteando el enfoque. El código plano es más fácil de leer, probar, depurar y mantener que las alternativas profundamente anidadas.
.avif)
