클래스

  • 클래스는 작고 변경에 유연해야 한다.

1. 클래스 체계

2. 클래스는 작아야 함

  • 클래스를 줄일때는 책임을 척도로 사용함 => 반드시 메서드 수와 비례하는 것은 아님
  • 클래스 이름에는 해당 클래스의 책임을 기술
  • 단일 책임 원칙(SRP Single Responsbility Principle)
    • 클래스는 변경할 이유가 하나여야 한다는 의미
    • 클래스를 변경할 이유를 팔악하려 애쓰다 보면 코드 추상화가 쉬어워짐
    • 작은 클래스 여럿으로 이뤄진 시스탬이 더 바람직
    • 책임이 하나며, 변겨할 이유가 하나며, 다른 작은 클래스와 협력해 시스탬에 필요한 동작을 수행
  • 응집도
    • 메서드가 변수를 더 많이 사용할수록 메서드와 클래스의 응집도가 높음

3. 변경하기 쉬운 클래스

  • 비공개 메서드를 클래서 일부에서만 사용: 잠재적으로 개선해야하는 가능성을 주는 클래스 -> 하지만 실제로 개선까지 실행하기는 어려움
  • 고정되는 것 + 변경 돼도 되는 것
  • 부모의 속성을 만들고 부모의 속성을 물려받은 자식 클래스
    • 고정되는 값을 부모 속성으로 만듬
    • 변경이 되어도 되는 것은 고정된 값(부모 속성)을 물려받은 자식 클래스에서 구현
  • 변경으로부터 격리
    • 인터페이스와 추상 클래스를 사용해서 구현에 미치는 영향을 격리
    • 계속 변경되는 값은 분리하고 테스트를 진행하여 변경에도 문제가 없는지 체크한다. -> 결합도는 낮아지고, 유연성과 재사용성을 높일 수 있으며 이해하기 쉬워진다.

4. 클래스 변경하기

  1. 원래 프로그램의 정확한 동작을 검증하는 테스트 슈트를 작성
  2. 한 번에 하나씩 수 차례에 걸쳐 조금씩 코드를 변경
  3. 코드를 변경할 때마다 테스트를 수행해 원래 프로그램과 동일하게 동작하는지 확인

javascript class