바위타는 두루미

[CleanCode]10.클래스 본문

카테고리 없음

[CleanCode]10.클래스

DoRoMii 2022. 3. 10. 01:38
728x90

코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경을 쓰더라도 더 높은 차원의 단계까지 신경쓰지 않으면 깨끗한 코드를 얻기 어렵다. 이 장에서는 깨끗한 클래스에 대해 다룬다. 

 

- 클래스 체계 

  - 자바의 경우 정적공개상수 -> 정적 비공개상수 ->비공개 인스턴스변수 ( 공개 변수가 필요한 경우는 거의 없음 ) 순으로 나오고 

  - 변수 다음에는 공개함수, 비공개함수는 자신을 호출하는 공개 함수 직후에 넣는다. 

 - 캡슐화

   - 변수와 유틸함수는 공개하지 않는 편이 낫지만, protected로 선언해 테스트 코드에 접근을 허용하기도함. 

- 클래스는 작아야 한다. 

  - 얼마나 작아야하는가 ? -> 클래스가 맡은 책임을 센다. 

  - 클래스 이름은 그 클래스의 책임을 기술해야하고 간결해야한다 ( 책임의 크기가 작도록 ) 

  -  SRP (단일 책임 원칙)은 클래스나 모듈을 변경할 이유가 하나뿐이어야한다. 

  -  큰 클래스 몇개가 아니라 작은 클래스 여럿으로 이루어진 시스템이 바람직하다. 

- 응집도 

  - 일반적으로 메서드가 변수를 더 많이 사용할 수록 메서드와 클래스의 응집도가 높다. 

  -  때떄로 몇몇 메서드만이 사용하는 인스턴스 변수가 많아지면 -> 클래스로 쪼개야한다는 신호다 

- 변경하기 쉬운 클래스

  - SRP 뿐만아니라 OCP(Open-closed  Principle )도 지원해야한다. : 확장에 개방적이고 수정에 폐쇄적

  - 새 기능을 수정하거나 변경할때 건드릴 코드가 최소인 시스템이 바람직하다. 

- 변경으로부터 격리 

  - 상세한 구현에 의존하는 코드는 테스트가 어렵다. 

  - 시스템의 결합도를 낮추면 유연성과 재사용성도 높아진다. 

  - 결합도가 낮다는 것은 각 시스템 요소가 다른 요소로부터 그리고 변경으로부터 잘 격리되어있다는 의미다. 

  - 결합도를 낮추면 DIP(Dependency Inversion Principle)을 따르는 클래스가 나온다. : 상세 구현 보다추상화에 의존하자

  

Comments