함수를 보고 복잡함을 느낀 적이 있나요? 클린 코드의 기본 원칙을 살펴보겠습니다. 함수는 한 수준의 추상화만 유지해야 합니다.
다음은 웹 애플리케이션에서 사용자를 생성하는 실제 예입니다.
// ❌ 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.length < 8) { return 'Password too short'; } // Hash password const salt = generateSalt(); const hashedPassword = hashWithSalt(userData.password, salt); // Format user data const user = { email: userData.email.toLowerCase(), password: hashedPassword, salt: salt, createdAt: new Date() }; // Save to DB saveUserToDatabase(user); }
이 기능은 다양한 추상화 수준을 혼합합니다.
단일 수준의 추상화 원칙에 따라 리팩토링해 보겠습니다.
// ✅ 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.length < 8) return 'Password too short'; return null; } function hashPassword(password) { const salt = generateSalt(); return { hash: hashWithSalt(password, salt), salt }; } function formatUserData(email, securePassword) { return { email: email.toLowerCase(), password: securePassword.hash, salt: securePassword.salt, createdAt: new Date() }; }
함수 작성 시:
기억하세요: 동일한 함수에서 "어떻게"와 "무엇"을 혼합하는 경우 아마도 여러 수준의 추상화를 다루고 있는 것입니다. 나누어 보세요!
위 내용은 한 수준의 추상화: 함수 정리의 핵심의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!