Regla
Utilice temprano devoluciones y protección cláusulas.
En profundidad profundo y tardía parámetro validación
hacer funciones más difíciles a leer y mantener.
Idiomas admitidos: 45+Introducción
Las cláusulas de protección validan las condiciones previas al inicio de una función y devuelven inmediatamente si no se cumplen. De este modo, el anidamiento se aplana al tratar los casos de error por adelantado, dejando la lógica principal sin anidar y fácil de leer. Las funciones que validan parámetros a mitad de camino o anidan rutas de éxito dentro de múltiples condicionales obligan a los lectores a rastrear el contexto a través de muchos niveles de sangría.
Por qué es importante
Legibilidad del código: Las cláusulas de guarda hacen visible el camino feliz al final de la función sin anidamiento. Los lectores ven todas las condiciones de error por adelantado y, a continuación, leen la lógica principal en un único nivel de sangría sin tener que seguir mentalmente múltiples condiciones anidadas.
Mantenimiento y modificación: La adición de nuevas condiciones de validación o error a código profundamente anidado requiere una colocación cuidadosa para evitar romper la lógica existente. Las cláusulas de protección de la parte superior permiten añadir nuevas comprobaciones sin tocar la lógica principal, lo que reduce el riesgo de introducir errores.
Ejemplos de códigos
❌ No conforme:
function processPayment(user, amount) {
if (user) {
if (user.isActive) {
if (amount > 0) {
if (user.balance >= amount) {
user.balance -= amount;
return { success: true, newBalance: user.balance };
} else {
return { success: false, error: 'Insufficient funds' };
}
} else {
return { success: false, error: 'Invalid amount' };
}
} else {
return { success: false, error: 'Inactive user' };
}
} else {
return { success: false, error: 'User required' };
}
}Por qué está mal: Cuatro niveles de anidamiento ocultan la lógica principal (deducción de equilibrio) en lo profundo de la función. Cada condición de error añade otro nivel de indentación, haciendo que el camino feliz sea difícil de encontrar y entender de un vistazo.
✅ Conforme:
function processPayment(user, amount) {
if (!user) {
return { success: false, error: 'User required' };
}
if (!user.isActive) {
return { success: false, error: 'Inactive user' };
}
if (amount <= 0) {
return { success: false, error: 'Invalid amount' };
}
if (user.balance < amount) {
return { success: false, error: 'Insufficient funds' };
}
user.balance -= amount;
return { success: true, newBalance: user.balance };
}
Por qué es importante: Las cláusulas de guarda validan todas las precondiciones con retornos tempranos, manteniendo la función en un único nivel de sangría. El camino feliz (deducción de saldo) es claramente visible al final sin anidamiento, lo que facilita la lectura y modificación de la función.
Conclusión
Valide las entradas y gestione los casos de error al principio de las funciones con cláusulas de protección. Cuando las condiciones fallen, devuélvalas antes en lugar de anidar la ruta de éxito. Esto mantiene el código plano, legible y fácil de modificar sin romper la lógica existente.
.avif)
