"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 한 수준의 추상화: 함수 정리의 핵심

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

2024-11-07에 게시됨
검색:639

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 



이 함수는 다양한 수준의 추상화를 혼합합니다.

  • 고급 비즈니스 로직(사용자 생성 흐름)
  • 중간 수준 작업(데이터 유효성 검사, 서식 지정)
  • 낮은 수준의 세부정보(비밀번호 해싱)

단일 수준의 추상화 원칙에 따라 리팩토링해 보겠습니다.

// ✅ 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 



이 접근 방식의 이점

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

주요 시사점

함수 작성 시:

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

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

릴리스 선언문 이 기사는 https://dev.to/56_kode/one-level-of-abstraction-the-key-to-clean-functions-2ekb?1에서 복제됩니다. 침해가 있는 경우, [email protected]에 문의하십시오. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3