Já olhou para uma função e se sentiu perdido em sua complexidade? Vamos explorar um princípio fundamental do código limpo: as funções devem manter apenas um nível de abstração.
Aqui está um exemplo real de criação de usuário em um aplicativo da 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 função mistura diferentes níveis de abstração:
Vamos refatorá-lo seguindo o princípio de nível único de abstração:
// ✅ 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.lengthBenefícios desta abordagem
- Legibilidade: A função principal parece uma história, descrevendo o que acontece em alto nível
- Manutenção: Cada função tem uma única responsabilidade, tornando as mudanças mais seguras
- Testabilidade: você pode testar cada parte da lógica de forma independente
- Reutilização: Essas funções focadas podem ser reutilizadas em outros contextos
Principais conclusões
Ao escrever funções:
Lembre-se: Se você estiver misturando "como" e "o quê" na mesma função, provavelmente estará lidando com vários níveis de abstração. Divida-os!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3