avoid_setters_without_getters 린트 규칙: 게터 없는 setter를 만들지 맙시다

avoid_setters_without_getters 린트 규칙: 게터 없는 setter를 만들지 맙시다

avoid_setters_without_getters짝이 되는 게터(getter) 없이 setter만 정의하지 말아 달라고 알려주는 Dart 린트(lint) 규칙이에요.

출처: avoid_setters_without_getters

본문

설명

setter만 정의하고 짝이 되는 getter는 정의하지 않으면, 논리적으로 모순이 생길 수 있어요. 예를 들어 프로퍼티에 어떤 값을 설정해 놓고 나서 그 프로퍼티의 값을 다시 관찰해 보면, 전혀 다른 값일 수 있거든요. 그래서 setter를 만들 땐 되도록이면 getter도 함께 만들어 주는 게 좋아요.

나쁜 예시

class Bad {
  int l, r;

  set length(int newLength) {
    r = l + newLength;
  }
}

length라는 setter만 있고, 그 값을 읽어 올 수 있는 getter가 없어요. 설정한 값과 관찰되는 값이 달라질 수 있는 위험이 있답니다.

좋은 예시

class Good {
  int l, r;

  int get length => r - l;

  set length(int newLength) {
    r = l + newLength;
  }
}

length에 setter와 getter를 모두 정의해 놓았어요. 이렇게 하면 설정과 읽기가 일관성을 유지해요.

규칙 활성화하기

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

linter:
  rules:
    - avoid_setters_without_getters

YAML 맵(map) 문법을 쓴다면 linter > rules 아래에 avoid_setters_without_getters: true를 넣으면 돼요:

linter:
  rules:
    avoid_setters_without_getters: true

더 알아보기