¿Alguna vez has mirado una función y te has sentido perdido en su complejidad? Exploremos un principio fundamental del código limpio: las funciones deben mantener solo un nivel de abstracción.
Aquí hay un ejemplo real de creación de usuarios en una aplicación web:
// ❌ A function doing too many things at different abstraction levels function createUser(userData) { // Validate data if (!userData.email || !userData.email.includes('@')) { return 'Invalid email'; } if (userData.password.lengthEsta función mezcla diferentes niveles de abstracción:
Refactoricémoslo siguiendo el principio de nivel único de abstracción:
// ✅ Clean version with one level of abstraction function createUser(userData) { const validationError = validateUserData(userData); if (validationError) return validationError; const securePassword = hashPassword(userData.password); const formattedUser = formatUserData(userData.email, securePassword); return saveUserToDatabase(formattedUser); } function validateUserData({ email, password }) { if (!email || !email.includes('@')) return 'Invalid email'; if (password.lengthBeneficios de este enfoque
- Legibilidad: La función principal se lee como una historia, describiendo lo que sucede en un alto nivel
- Mantenibilidad: Cada función tiene una única responsabilidad, haciendo los cambios más seguros
- Comprobabilidad: Puedes probar cada pieza de lógica de forma independiente
- Reutilizabilidad: Estas funciones enfocadas se pueden reutilizar en otros contextos
Conclusiones clave
Al escribir funciones:
Recuerda: si estás mezclando "cómo" y "qué" en la misma función, probablemente estés tratando con múltiples niveles de abstracción. ¡Divídelos!
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3