>웹 프론트엔드 >JS 튜토리얼 >깨끗한 코드: 함수 매개변수의 부울 플래그가 코드 냄새인 이유

깨끗한 코드: 함수 매개변수의 부울 플래그가 코드 냄새인 이유

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-12 18:56:17386검색

Clean code: why boolean flags in function parameters are a code smell

함수 매개변수의 부울 플래그는 코드를 읽고 유지하기 어렵게 만들 수 있습니다. 이를 피해야 하는 이유와 대신 할 수 있는 조치를 살펴보겠습니다.

부울 플래그의 문제

부울 매개변수를 사용하면 함수가 두 가지 다른 작업을 수행하여 SRP(단일 책임 원칙)를 위반하는 경우가 많습니다. 전형적인 예는 다음과 같습니다.

function createFile(name, isTemp) {
  if (isTemp) {
    fs.create(`./temp/${name}`);
  } else {
    fs.create(name);
  }
}

간단해 보이지만 몇 가지 문제가 있습니다.

  1. 불분명한 함수 호출: 코드를 읽을 때 부울이 무엇을 의미하는지 알기 어렵습니다.
   createFile("log.txt", true);  // What does 'true' mean here?
  1. 두 가지 기능이 하나로 통합: 부울은 스위치처럼 작동하여 기능이 서로 다른 작업을 수행하도록 합니다

  2. 테스트가 더 어려워짐: 기능이 작동할 수 있는 두 가지 방법을 모두 확인해야 합니다

  3. 기능 추가가 어려움: 나중에 세 번째 옵션이 필요한 경우 다른 부울을 추가하면 상황이 더욱 악화될 수 있습니다

더 나은 글쓰기 방법

기능을 두 개의 기능으로 나누어 각각 한 가지 작업을 수행합니다.

function createFile(name) {
  fs.create(name);
}

function createTempFile(name) {
  createFile(`./temp/${name}`);
}

다음을 제공합니다.

  1. 이름 지우기: createTempFile("log.txt")가 수행하는 작업을 정확히 알려줍니다

  2. 간단한 논리: 각 함수는 한 가지 작업만 수행합니다

  3. 간편한 테스트: 기능당 하나만 테스트하면 됩니다

  4. 간단한 기능 추가: 새로운 것이 필요하십니까? 기존 기능을 변경하지 않고 새 기능 추가

더 많은 예시

이 아이디어는 다양한 상황에 적용됩니다. 다음은 몇 가지 사례입니다.

로그인 시스템

// ❌ Bad
function authenticate(user, isAdmin) {
  if (isAdmin) {
    // Admin login logic
  } else {
    // Regular user login logic
  }
}

// ✅ Good 
function authenticateUser(user) {
  // Regular user login logic
}

function authenticateAdmin(user) {
  // Admin login logic
}

이메일 시스템

// ❌ Bad
function sendEmail(user, isHtmlFormat) {
  if (isHtmlFormat) {
    // Send HTML email
  } else {
    // Send plain text email
  }
}

// ✅ Good
function sendPlainTextEmail(user) {
  // Send plain text email
}

function sendHtmlEmail(user) {
  // Send HTML email
}

요약하자면

함수 매개변수의 불리언 플래그는 종종 함수가 너무 많은 일을 하려고 한다는 것을 보여줍니다. 별도의 집중된 기능을 만들면 다음과 같은 코드가 생성됩니다.

  • 읽기 쉬움
  • 쉬운 테스트
  • 손쉬운 수정
  • 변경이 용이함

다음에 부울 매개변수를 추가하고 싶다면 대신 두 개의 함수를 만드는 것을 고려해 보세요.


코드에서 이와 같은 분할 기능을 사용해 보셨나요? 도움이 되었나요? 댓글로 알려주세요!

위 내용은 깨끗한 코드: 함수 매개변수의 부울 플래그가 코드 냄새인 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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