개발자 99% 커뮤니티에서 수다 떨어요!
10장 클래스
클래스 체계
정적 공개 상수
정적 비공개 변수
비공개 인스턴스 변수
공개 함수
비공개 함수
클래스는 작아야 한다!
클래스 이름은 해당 클래스 책임을 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다.
SRP(단일 책임 원칙) : 클래스나 모듈을 변경할 이유가 단 하나뿐이어야 한다.
작은 클래스가 많은 시스템이든 큰 클래스가 몇 개뿐인 시스템이든 돌아가는 부품 수는 비슷하고 익힐 내용의 양이 비슷하다.
응집도
각 클래스 메서드는 클래스 인스턴스 변수를 하나 이상 사용해야 한다. 일반적으로 메서드가 변수를 더 많이 사용 할수록 메서드와 클래스는 응집도가 더 높다.
함수를 작게, 매개변수 목록을 짧게 전략을 따르다 보면 때때로 몇몇 메서드만이 사용하는 인스턴스 변수가 아주 많아진다. 새로운 클래스로 쪼개야 한다는 신호다.
큰 함수를 작은 함수 여럿으로 쪼개다 보면 종종 작은 클래스 여럿으로 쪼갤 기회가 생긴다.
변경하기 쉬운 클래스
변경으로부터 격리
상세한 구현에 의존하는 클라이언트 클래스는 구현이 바뀌면 위험에 빠진다. 그래서 우리는 인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리한다.
DIP : 클래스는 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙.