>  기사  >  웹 프론트엔드  >  한 수준의 추상화: 함수 정리의 핵심

한 수준의 추상화: 함수 정리의 핵심

Linda Hamilton
Linda Hamilton원래의
2024-10-30 21:02:30332검색

One Level of Abstraction: The Key to Clean Functions

함수를 보고 복잡함을 느낀 적이 있나요? 클린 코드의 기본 원칙을 살펴보겠습니다. 함수는 한 수준의 추상화만 유지해야 합니다.

다음은 웹 애플리케이션에서 사용자를 생성하는 실제 예입니다.

// ❌ 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()
  };
}

이 접근 방식의 이점

  1. 가독성: 주요 기능은 무슨 일이 일어나는지 높은 수준에서 설명하는 이야기처럼 읽혀집니다
  2. 유지관리성: 각 기능에는 단일 책임이 있으므로 변경이 더 안전해집니다
  3. 테스트 가능성: 각 논리 부분을 독립적으로 테스트할 수 있습니다
  4. 재사용성: 이러한 집중 기능은 다른 상황에서 재사용할 수 있습니다

주요 시사점

함수 작성 시:

  • 한 가지 추상화 수준에 집중하도록 하세요
  • 복잡한 연산을 잘 명명된 함수로 추출
  • 주요 기능으로 스토리를 전달하세요
  • 각 기능을 프로세스의 단일 단계로 생각하세요

기억하세요: 동일한 함수에서 "어떻게"와 "무엇"을 혼합하는 경우 아마도 여러 수준의 추상화를 다루고 있는 것입니다. 나누어 보세요!

위 내용은 한 수준의 추상화: 함수 정리의 핵심의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.