클래스
1. 클래스 체계
2. 클래스는 작아야 함
- 클래스를 줄일때는 책임을 척도로 사용함 => 반드시 메서드 수와 비례하는 것은 아님
- 클래스 이름에는 해당 클래스의 책임을 기술
- 단일 책임 원칙(SRP Single Responsbility Principle)
- 클래스는 변경할 이유가 하나여야 한다는 의미
- 클래스를 변경할 이유를 팔악하려 애쓰다 보면 코드 추상화가 쉬어워짐
- 작은 클래스 여럿으로 이뤄진 시스탬이 더 바람직
책임이 하나며, 변겨할 이유가 하나며, 다른 작은 클래스와 협력해 시스탬에 필요한 동작을 수행
- 응집도
- 메서드가 변수를 더 많이 사용할수록 메서드와 클래스의 응집도가 높음
3. 변경하기 쉬운 클래스
- 비공개 메서드를 클래서 일부에서만 사용: 잠재적으로 개선해야하는 가능성을 주는 클래스 -> 하지만 실제로 개선까지 실행하기는 어려움
- 고정되는 것 + 변경 돼도 되는 것
- 부모의 속성을 만들고 부모의 속성을 물려받은 자식 클래스
- 고정되는 값을 부모 속성으로 만듬
- 변경이 되어도 되는 것은 고정된 값(부모 속성)을 물려받은 자식 클래스에서 구현
- 변경으로부터 격리
- 인터페이스와 추상 클래스를 사용해서 구현에 미치는 영향을 격리
- 계속 변경되는 값은 분리하고 테스트를 진행하여 변경에도 문제가 없는지 체크한다.
-> 결합도는 낮아지고, 유연성과 재사용성을 높일 수 있으며 이해하기 쉬워진다.
4. 클래스 변경하기
- 원래 프로그램의 정확한 동작을 검증하는 테스트 슈트를 작성
- 한 번에 하나씩 수 차례에 걸쳐 조금씩 코드를 변경
- 코드를 변경할 때마다 테스트를 수행해 원래 프로그램과 동일하게 동작하는지 확인
javascript class