Ch10. Classes
클래스 체계
변수 목록
- static public var
- private var
- private instance var
- public
- 공개 변수가 필요한 경우는 거의 없음
- function
클래스는 작아야함!
- 첫째 규칙도 작은 크기이고, 두번째 규칙도 작은 크기이다.
- 어느정도?
- → 단일 책임 원칙
- 클래스 설명은 if, and, or, but 없이 25자 내외로 가능해야함.
- 어느정도?
SRP (Single Responsibility Principle)
- 클래스나 모듈을 변경할 이유가 하나이어야 함.
- 객체 지향에서 중요한 개념!
- 우리는 일반적으로 돌아가는 일에 집중을 하고, 다음 단계인 “깨끗하고 체계적인 소프트웨어” 라는 관심사로 전환하지 않음. ㅜㅜ
- 즉, 개발 이후 리팩토링을 거쳐야만 한다!
클래스는 큰 몇 개가 아니라 작은 클래스 여럿으로 이루어진 시스템이 더 바람직함
- 작은 클래슨느 각자 맡은 책임이 하나이며, 변경할 이유 또한 하나이어야 한다.
- 다른 작은 클래스와 협력해서 시스템에 필요한 동작을 수행함.
응집도 (cohesion)
- 인스턴스 변수 수가 작아야함.
- 메서드가 인스턴스 변수를 많이 사용할 수록 응집도가 높음
- → 클래스에 속한 메서드와 변수가 서로 의존하면서 논리적인 단위로 묶인다는 의미
- 만약 몇몇 메서드만이 사용하는 인스턴스 변수가 많이지면 클래스를 쪼개야함!
변경하기 쉬운 클래스
- 대다수 시스템은 지속적인 변경이 불가피함.
- 따라서 SRP 따르는 깨끗한 시스템이 필요함
- OCP 도 지원하도록
- 확장에 개방적이고, 수정에 폐쇄적이어야 한다는 원칙
- 새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조!
DIP 의존성 역전 원칙
- 변화하기 쉬운 것 또는 자주 변화하는 것에 의존하기 보다는, 변화하기 어렵고 거의 변화가 없는 것에 의존해라!!
- → 결합도를 최소로 줄이면 DIP를 따르는 클래스가 나옴
- 추상화에 의존해라!
- → 추상 클래스는 테스트가 쉬움