클린코드 TIL : 10장. 클래스

Devil😈·2024년 2월 12일
1

CleanCode

목록 보기
9/10
post-thumbnail

클래스 체계

클래스 표준 관례에 따르면 가장 먼저 변수 목록이 나온다.

  • 정적(static) 공개(public) 상수가 처음에 나오고
  • 정적 비공개(private) 변수
  • 비공개 인스턴수 변수

보통 위 순서로 선언한다.
이후에는 공개 함수가 나오고 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다.

클래스는 작아야 한다

함수는 물리적인 행 수로 크기를 측정하지만 클래스는 맡은 책임을 기준으로 한다.

단일 책임 원칙

SRP(Single Responsibility Principle) = 클래스나 모듈을 변경할 이유가 하나뿐이어야 한다는 원칙. 객체 지향 설계에서 매우 중요함에도 돌아가게만 만들면 된다는 인식 때문에 개발자들이 가장 무시하는 규칙중 하나이다.

응집도(Cohesion)

클래스는 인스턴스 변수 수가 작아야 한다. 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다. 모든 인스턴스 변수를 메서드마다 사용하는 클래스는 응집도가 가장 높은데 이런 클래스는 바람직하지 않다.
하지만 우리는 응집도가 높은 클래스를 선호하는데 응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미이기 때문이다.

아래 코드는 응집도가 높은 좋은 코드의 예시이다?


class Stack {
  int _topOfStack = 0;
  List<int> _elements = [];

  int get size => _topOfStack;

  void push(int element) {
    _elements.add(element);
    _topOfStack++;
  }

  int pop() {
    if (_topOfStack == 0) {
      throw PoppedWhenEmpty();
    }
    int element = _elements[_topOfStack - 1];
    _elements.removeAt(_topOfStack - 1);
    return element;
  }
}
profile
얼굴셋 손여섯

0개의 댓글