@Deprecated()를 일관되게 적용해 주세요

@Deprecated()를 일관되게 적용해 주세요

클래스나 필드가 deprecated라면, 관련된 생성자나 생성자 파라미터에도 @Deprecated() 어노테이션을 함께 붙여서 일관성을 유지해 주세요. 그래야 사용자들이 어디서부터 폐기된 API인지 명확히 알 수 있어요.

출처: Missing deprecated annotation

본문

@Deprecated()를 일관되게 적용해 주세요.

  • 클래스가 deprecated라면, 그 생성자도 deprecated여야 해요.
  • 필드가 deprecated라면, 그 필드를 가리키는 생성자 파라미터도 deprecated여야 해요.
  • 필드를 가리키는 생성자 파라미터가 deprecated라면, 그 필드도 deprecated여야 해요.

BAD:

@deprecated
class A {
  A();
}

class B {
  B({this.field});
  @deprecated
  Object field;
}

GOOD:

@deprecated
class A {
  @deprecated
  A();
}

class B {
  B({@deprecated this.field});
  @deprecated
  Object field;
}

class C extends B {
  C({@deprecated super.field});
}

활성화 방법

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

linter:
  rules:
    - deprecated_consistency

대신 YAML map 문법으로 린트 규칙을 설정한다면 linter > rules 아래에 deprecated_consistency: true를 추가하면 돼요.

linter:
  rules:
    deprecated_consistency: true

더 알아보기