개발자 99% 커뮤니티에서 수다 떨어요!
클래스 하나에 기능들을 때려박지 말고 작게 나누자
하지만 쉽지 않겠다..
2024.02.12
10장: 클래스
가장 먼저 변수 목록이 나온다. 정적 공개 상수가 있다면 맨 처음에 나온다.
다음으로 정적 비공개 변수가 나오며, 이어서 배공개 인스턴스 변수가 나온다. 공개 변수가 필요한 경우는 거의 없다.
변수 목록 다음에는 공개 함수가 나온다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다. 즉, 추상화 단계가 순차적으로 내려간다.
그래서 프로그램은 신문 기사처럼 읽힌다. 172
캡슐화
변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다. 172
클래스를 설계할 때도 함수와 마찬가지로 작게!가 기본 규칙이다. 172
클래스 이름은 해당 클래스 책임을 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다. 175
단일 책임 원칙
클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다. 175
큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다. 177
응집도
클래스는 인스턴스 변수 수가 작아야 한다. 177
큰 함수를 작은 함수 여럿으로 쪼개다 보면 종종 작은 클래스 여럿으로 쪼갤 기회가 생긴다. 179
새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조가 바람직하다. 이상적인 시스템이라면 새 기능을 추가할 때 시스템을 확장할 뿐 기존 코드를 변경하지는 않는다. 188
변경으로부터 격리
클래스는 작게! 이름을 잘 짓는게 중요!