클래스는 작아야 합니다. 무엇이 작아야 하냐면 클래스가 맡은 책임이 작아야 합니다.
클래스 이름은 해당 클래스 책임을 기술해야 합니다. 클래스의 설명은 if(만일), and(그리고), or(하며), but(하지만)을 사용하지 않고 25 단어 내외로 설명 가능해야 합니다.
단일 책임 원칙(SRP) : 클래스나 모듈을 변경할 이유가 단 하나뿐이여야 한다는 원칙입니다.
클래스를 언제 변경해야할지 생각하다 보면 클래스를 추상화하기 쉬워지고 클래스를 나누는데 도움이 됩니다.
큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다.
응집도란 클래스의 메서드들이 인스턴스 변수들을 많이 사용할 수록 응집도가 높다 할 수 있습니다.
함수를 쪼개다 보면 인스턴스 변수가 늘어나게 되고 응집력을 잃게됩니다. 클래스의 응집력이 떨어진다면 클래스를 나눌 기회가 생깁니다.
시스템이든 요구사항이든 변경은 계속 가해집니다. 확장에 개방적이고 수정에 폐쇠적이여야 한다는 OCP 원칙을 적용되도록 변경할 수 있습니다.
인터페이스나 추상 클래스를 사용하여 구현이 미치는 영향을 격리시킬 수 있습니다.
결합도를 줄이면 자연스럽게 DIP를 따르는 클래스가 나옵니다. DIP는 클래스가 추상화에 의존해야 한다는 원칙입니다.
함수에서도 그랬듯이 클래스에서도 ‘이름을 어떻게 지어주어야 하나?’와 ‘어떻게 나누어야 하냐?’를 계속 고민하게 되는거 같습니다.
양쪽다 추상화하는 연습을 요구하는 것 같습니다.😭