ESLint의 no-useless-return 규칙

2024-04-02

ESLint의 no-useless-return 규칙

규칙 작동 방식

no-useless-return 규칙은 함수의 마지막 문장을 분석하여 다음과 같은 경우 오류를 발생시킵니다.

  • return 문이 아무것도 반환하지 않는 경우 (예: return;)
  • return 문이 undefined를 반환하는 경우
  • return 문이 값을 반환하지만 함수의 마지막 문장이 아닌 경우

예시

다음은 no-useless-return 규칙에 대한 몇 가지 예시입니다.

올바른 코드:

function foo() {
  // ...
}

function bar() {
  return 1;
}

function baz() {
  if (condition) {
    return;
  }

  // ...
}

잘못된 코드:

function foo() {
  return; // 오류: 불필요한 return 문
}

function bar() {
  return undefined; // 오류: undefined를 반환하는 return 문
}

function baz() {
  if (condition) {
    return;
  }

  return; // 오류: 함수 마지막 문장이 아닌 return 문
}

규칙 비활성화

no-useless-return 규칙은 기본적으로 활성화되어 있지만 .eslintrc 파일에서 비활성화할 수 있습니다.

{
  "rules": {
    "no-useless-return": "off"
  }
}


예제 코드

올바른 코드:

// 함수가 아무것도 반환하지 않는 경우

function foo() {
  // ...
}

// 함수가 값을 반환하는 경우

function bar() {
  return 1;
}

// 조건에 따라 return하는 경우

function baz() {
  if (condition) {
    return;
  }

  // ...
}

// 함수 마지막 문장이 return인 경우

function qux() {
  // ...
  return undefined;
}

잘못된 코드:

// 함수 마지막 문장이 불필요한 return인 경우

function foo() {
  return; // 오류: 불필요한 return 문
}

// 함수 마지막 문장이 undefined를 반환하는 경우

function bar() {
  return undefined; // 오류: undefined를 반환하는 return 문
}

// 함수 마지막 문장이 아닌 return인 경우

function baz() {
  if (condition) {
    return;
  }

  return; // 오류: 함수 마지막 문장이 아닌 return 문
}


no-useless-return 규칙 대체 방법

조건부 return 사용:

function foo() {
  if (condition) {
    return;
  }

  // ...
}

early return 패턴 사용:

function foo(bar) {
  if (bar === undefined) {
    return;
  }

  // ...
}

빈 객체 반환:

function foo() {
  if (condition) {
    return {};
  }

  // ...
}

null 반환:

function foo() {
  if (condition) {
    return null;
  }

  // ...
}

함수에 대한 설명 추가:

// 함수가 아무것도 반환하지 않는다는 것을 명확히 하기 위해 함수 설명 추가

/**
 * 아무것도 반환하지 않는 함수입니다.
 */
function foo() {
  // ...
}

주의 사항:

  • 위의 대체 방법은 특정 상황에 따라 다를 수 있습니다.
  • 코드의 가독성을 위해 가장 적합한 방법을 선택해야 합니다.

결론

no-useless-return 규칙은 코드의 가독성을 향상시키는 데 도움이 되는 유용한 규칙입니다. 하지만 특정 상황에서는 불필요하거나 불편할 수 있습니다. 위의 대체 방법을 참고하여 상황에 맞는 방법을 선택하여 사용하시기 바랍니다.





ESLint 규칙: no-unneeded-ternary

no-unneeded-ternary 규칙은 불필요한 삼항 연산자 사용을 방지합니다. 삼항 연산자는 간결하게 코드를 작성할 수 있지만, 불필요하게 사용하면 코드를 읽기 어렵게 만들 수 있습니다.예시:다음 코드는 불필요한 삼항 연산자를 사용합니다


ESLint의 no-debugger 규칙

사용 이유:디버거 문은 코드를 더 느리게 만들고 성능 저하를 초래합니다.디버거 문은 코드를 더 복잡하게 만들고 이해하기 어렵게 만들 수 있습니다.디버거 문은 프로덕션 환경에서 의도치 않게 실행될 수 있습니다.대안:콘솔 로그를 사용하여 코드 값을 출력합니다


ESLint의 no-restricted-exports 규칙: 코드의 명확성을 유지하는 강력한 도구

ESLint의 no-restricted-exports 규칙은 특정 이름의 변수, 함수, 클래스 등을 모듈에서 내보내는 것을 제한합니다. 이는 코드의 명확성과 일관성을 유지하고, 의도하지 않은 이름 충돌을 방지하는 데 도움이 됩니다


ESLint의 "Rules"와 관련된 "arrow-spacing" 규칙 설명

always: 화살표 연산자 양쪽에 항상 공백을 추가합니다.never: 화살표 연산자 양쪽에 공백을 추가하지 않습니다.옵션 선택어떤 옵션을 선택할지는 코드 스타일 가이드라인에 따라 다릅니다. 일반적으로 다음과 같은 경우 always 옵션을 사용하는 것이 좋습니다