본문 바로가기

Book review/clean code

6장. 객체와 자료구조(clean code)

자료 추상화

  • 클래스란 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 의미를 가진다.
  • 자료를 세세하게 공개하기 보다는 추상적 개념을 표현하는 것이 좋다. 

자료/객체 비대칭

  • 객체와 자료구조는 상호보안적인 성격을 가진다. 

디미터 법칙

  • 모듈은 자신이 조작하는 객체의 속사정을 몰라야한다는 법칙 
  • 기차 충돌 
    • final String outputDir= ctxt.getOptions().getScratchDir().getAbsolutePath();
      이런 방식의 코드는 피하는 편이 좋다. - 객체라면 내부구조를 숨겨야 하니 디미터 법칙을 위반한다. 
    • 자료구조라면 내부 구조를 노출하므로 디미터 법칙 위반이 아니다.
  • 잡종 구조
    • 절반은 객체, 절반은 자료구조인 설계는 단점만 모아둔 구조다.

 

자료 전달 객체

  • 공개 변수만 있고 함수가 없는 클래스를 말한다. DTO라고 하며, 흔히 데이터베이스에 저장된 정보를 애플리케이션 코드에서 사용할 객체로 변환할 때 사용하는 구조체이다.

결론

  • 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 적합하고, 새로운 동작을 추가하는 유연성이 필요하면 자료구조가 더 적합하다.

 

review

디미터 법칙를 지킨다거나 객체지향적 프로그래밍을 한다는 것은 애매하고 참 어려운 것 같다. 오직 원칙만을 생각한다면 부자연스러운 코드를 짤 가능성도 있기 때문이다. 적절한 상황에 맞게 프로그램이 동작하는데 유리하게 설계해야하는 것을 잊지 않고, 또 고민하며 개발해야겠다.  🏃

 

출처) clean code / 인사이트 

 

 

 

'Book review > clean code' 카테고리의 다른 글

8장. 경계(clean code)  (0) 2021.09.02
7장. 오류처리(clean code)  (0) 2021.08.30
5장. 형식 맞추기(clean code)  (0) 2021.08.09
4장. 주석(clean code)  (0) 2021.08.06
3장. 함수(clean code)  (0) 2021.08.06