제네릭 함수 타입 별칭 선호하기

제네릭 함수 타입 별칭 선호하기

Dart에는 함수 타입을 별칭으로 만들어 쓰는 방법이 두 가지가 있어요. 하나는 예전부터 쓰던 typedef void F() 같은 문법이고, 다른 하나는 typedef F = void Function()처럼 제네릭 함수 타입 별칭을 쓰는 방식이죠. 두 문법이 섞여 있으면 코드가 헷갈리기 쉬워서, 이 린트 규칙은 한 가지 문법으로 통일하도록 도와줘요.

출처: prefer_generic_function_type_aliases

본문

제네릭 함수 타입 별칭을 사용하세요.

제네릭 함수가 도입되면서, 기존 함수 타입 별칭(typedef void F())으로는 사용자가 표현하고 싶은 파라미터화의 모든 경우를 다 담지 못하게 되었어요. 제네릭 함수 타입 별칭(typedef F = void Function())이 바로 그 문제를 해결해 주었죠.

일관성과 가독성 측면에서도 문법을 하나로 통일하는 게 좋아요. 그래서 제네릭 함수 타입 별칭을 쓰는 걸 권장해요.

나쁜 예:

typedef void F();

좋은 예:

typedef F = void Function();

이 규칙 켜는 법

prefer_generic_function_type_aliases 규칙을 켜려면 analysis_options.yaml 파일의 linter > rules 아래에 규칙 이름을 추가하면 돼요.

linter:
  rules:
    - prefer_generic_function_type_aliases

혹시 YAML 맵 문법으로 린트 규칙을 설정하고 있다면, linter > rules 아래에 이렇게 적어주면 돼요.

linter:
  rules:
    prefer_generic_function_type_aliases: true

더 알아보기