좌충우돌 개발

클래스

|

클린코드 10장 클래스

클래스 체계

정적 공개 상수
정적 비공개 변수
비공개 인스턴스 변수

공개 함수
비공개 함수: 자신을 호출하는 공개 함수 직후에 넣는다.
전체는 신문과 같은 방식으로 작성한다.

클래스는 작아야한다.

  • 클래스가 맡고 있는 책임이 적어야한다.
  • 클래스의 이름은 클래스 책임을 기술한다.
  • 단일 책임 원치(Single Responsibility Principle) : 클래스나 모듈을 변경해야 하는 이유는 단 하나뿐이어야 한다.
  • 큰 클래스 몇개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직 하다.
  • 작은 클래스가 맡은 책임은 하나며, 다른 작은 클래스와 협력하여 시스템에 필요한 동작을 수행한다.

응집도(cohesion)

  • 클래스는 인스턴스 변수 수가 작아야 한다.
  • 각 클래스 메서드는 클래스 인스턴스 변수를 하나이상 사용해야 한다.
  • 일반적으로 메서드가 변수를 더 많이 사용할 수록 메서드 와 클래스는 응집도가 높아 진다.
  • 응집도가 높다는 말은 클래스에 속한 메소드와 변수가 서로 의존하며 논리적으로 묶인다는 의미이다.

응집도를 유지하면 작은 클래스가 여럿이 나온다.

  • 큰 method를 나눌 때 변수를 instance 변수로 변경한다.
  • 이렇게 되면 응집도가 떨어지게 된다.
  • 응집도가 떨어진 method는 클래스로 변경한다.

변경하기 쉬운 클래스

상세구현에 의존하는 클라이언트 클래스는 구현이 변경이 되면 위험에 빠진다.
그래서 interface나 abstract class를 사용하여 구현이 미치는 영향을 격리시킨다.
격리 이후에 stub을 사용하여 test를 용이하게 만든다.

Comments