함수를 이름에 묶을 때는 함수 선언을 써요

함수를 이름에 묶을 때는 함수 선언을 써요

prefer_function_declarations_over_variables 린트 규칙은 함수를 이름에 바인딩할 때는 함수 리터럴 변수보다 함수 선언을 쓰라고 권하는 규칙이에요. Stable 상태이고 공식 추천(Recommended) 규칙이며 자동 수정도 가능해요.

출처: Use a function declaration to bind a function to a name.

본문

Effective Dart에서도 나오는 규칙이에요. 함수를 이름에 바인딩할 때는 함수 선언을 사용하세요.

Dart는 지역 함수 선언(local function declaration)을 지원하므로, 함수 리터럴 대신 함수 선언을 쓰는 게 좋은 습관이에요.

BAD — 함수 리터럴을 변수에 담았어요.

void main() {
  var localFunction = () {
    ...
  };
}

GOOD — 로컬 함수 선언으로 바꿨어요.

void main() {
  localFunction() {
    ...
  }
}

규칙 켜기

analysis_options.yaml 파일의 linter > rules 아래에 prefer_function_declarations_over_variables를 추가하면 돼요.

linter:
  rules:
    - prefer_function_declarations_over_variables

YAML 맵 문법으로 설정한다면 이렇게 써요.

linter:
  rules:
    prefer_function_declarations_over_variables: true

더 알아보기

  • 함수를 다른 값처럼 넘겨줘야 하는 상황이라면 함수 리터럴 변수가 더 적절할 수 있어요.