[클린코드] 클래스

danbi lee·2025년 7월 20일

개발자북클럽

목록 보기
21/21

TIL 3줄 요약

  • 클래스는 작아야 하고, 클래스 이름은 해당 클래스 책임을 기술해야 하며, 단일 책임 원칙(SRP)을 따라야 한다.
  • 응집도를 높이기 위해 클래스는 인스턴스 변수 수가 작아야 하고, 각 클래스 메서드는 클래스 인스턴스 변수를 하나 이상 사용해야 한다.
  • 변경으로부터 격리하기 위해 구체적인 클래스보다는 추상 클래스나 인터페이스에 의존하고, 결합도를 낮춰야 한다.

TIL 날짜

2025.07.20

오늘 읽을 범위

  1. 클래스

책에서 기억하고 싶은 내용

클래스 체계

  • 자바 관례상 변수의 순서는 static -> public -> private 다.
  • 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. 비공개 상태를 유지할 온갖 방법을 강구해야한다.

클래스는 작아야한다.

  • 클래스 이름은 해당 클래스 책임을 기술해야한다.
    간결한 이름이 떠오르지 않는다면 클래스 크기가 너무 커서이고,
    클래스 이름이 모호하다면 클래스 책임이 너무 많아서다.
  • 단일 책임 원칙(Singgle Responsibility Principle)은 변경할 이유가 단 하나여야 한다는 의미이다.
  • 큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다.
  • 큰 함수를 작은 함수로 여럿으로 쪼개다 보면 자연스럽게 클래스의 응집력이 높아진다.

변경 사항으로부터 격리

  • 인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리한다.
  • 시스템 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다. 결합도가 낮다는 소리는 각 시스템 요소가 다른 요소로부터 그리고 변경으로부터 잘 격리되어 있다는 의미다.
  • 의존성 역전 원칙(Dependency Inversion Principle)은 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙이다.

오늘 읽은 소감

클래스를 잘게 쪼개면 파일 내 코드 길이가 길어지는게 우려되어서 단일 책임 원칙을 지키지 않은 경우들이 더러 있었다. 하지만 단일 책임 원칙을 지킬 경우 여러 장점이 있음을 알게 되었다. 문제 해결 속도가 향상되고 병렬 작업도 가능해진다. 그리고 테스트 케이스 작성이 쉬워진다. 굴러가는 코드 만들기에 급급했던 모습은 과거에 가둬두고싶다.

profile
계속해서 보완중

0개의 댓글