unnecessary_constructor_name 린트 규칙: 불필요한 .new 생성자 이름 피하기

unnecessary_constructor_name 린트 규칙: 불필요한 .new 생성자 이름 피하기

unnecessary_constructor_name기본 unnamed 생성자를 부를 때 굳이 .new를 붙이고 있는 경우를 알려주는 린트 규칙이에요. 주어진 클래스 C에서 C.new는 이름 없는 생성자 C와 완전히 같은 생성자를 가리키기 때문에, 시각적 잡음만 추가할 뿐이에요.

출처: unnecessary_constructor_name

본문

설명

.new보다는 기본 unnamed 생성자를 사용하는 쪽을 선호하세요. 주어진 클래스 C에 대해, 이름이 붙은 unnamed 생성자 C.new는 이름 없는 생성자 C와 같은 생성자를 가리켜요. 그래서 호출할 때 아무것도 추가로 주는 게 없고, 눈에만 거슬리는 시각적 잡음이죠. 이 규칙은 생성자 tear-off를 식별하려는 경우가 아니라면 그런 .new 사용을 피하라고 해요.

BAD:

class A {
  A.new(); // LINT
}

var a = A.new(); // LINT

GOOD:

class A {
  A.ok();
}

var a = A();
var aa = A.ok();
var makeA = A.new;

A()처럼 그냥 호출하면 같은 생성자를 쓰는 거니까 굳이 .new를 붙일 필요가 없어요. 다만 마지막 줄의 var makeA = A.new;처럼 생성자 tear-off(함수처럼 생성자를 넘겨주는 것)를 만들 때는 .new가 쓰일 수 있어요.

활성화 방법

unnecessary_constructor_name 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 규칙을 추가하면 돼요.

linter:
  rules:
    - unnecessary_constructor_name

대신 YAML 맵 문법을 사용해서 린트 규칙을 설정하고 있다면, linter > rules 아래에 unnecessary_constructor_name: true를 추가하면 돼요.

linter:
  rules:
    unnecessary_constructor_name: true

더 알아보기