10. 클래스
깨끗한 클래스
#
클래스 체계#
클래스 순서추상화 단계가 순차적으로 이루어져 읽기 쉽도록
- static public 상수
- static private 인스턴스
- private 인스턴스
- public method
- private method는 호출한 public method 바로 밑에
#
캡슐화- 캡슐화를 풀어주는 정책은 다른 해결책이 없을때만..
#
클래스는 작아야 함- 얼마나?
- 맡은 책임이 하나만 (SRP, 단일 책임의 원칙)
- 작은 클래스 여럿으로 이뤄진 시스템이 바람직
- 변경 시, 알아야할 내용을 줄일 수 있음
#
작게 구현하는 법- SRP, 책임은 하나만
- 클래스 이름에 책임이 담기도록 구성
- 이름이 클래스 크기를 줄이는 첫번째 관문
#
응집도- 응집도를 를 높게 유지
- 인스턴스 변수 수를 작게 유지
- 메서드는 클래스 인스턴스 변수를 하나 이상 사용하기
함수를 작게, 매개변수 목록을 적게
를 따르다 보면 특정 메서드만 사용하는 특정 필드들이 생겨남- 이는 클래스를 쪼개야하는 신호
- 큰 함수를 작게 쪼개다 보면 응집력을 잃음
- 응집력이 없어져 가는 것을 본다면 해당 클래스를 나눔
- 이런 행위를 반복하면서 프로그램에 체계가 잡혀나가게 됨
#
변경하기 쉬운 클래스- 클래스 일부 메서드에서만 사용되는 private는 코드를 개선할 냄새를 풍김
- (밥 아저씨의 경험 공유)
- 새기능을 수정하거 기존 기능을 변경할 때 건드리는 코드가 최소인 시스템 구조가 바람직!
- OCP, 개방 폐쇄 원칙 을 지키면 가능
#
변경으로부터 격리- abstract 클래스, interface를 많이 활용함
- 테스트 가능할 정도로 결합도를 낮추면 유연성과 재사용성도 높아짐
- 결합도를 줄이다 보면 DIP (Dependency Inversion Principle) 을 지키게 됨
- 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙