책책책 책을 읽읍시다‼ ver.개발/[ 클린코드 ]

[클린코드] 14일차. 123-131pg | 디미터 법칙, 예외처리

D269 2023. 9. 20. 11:09
728x90

 

 

14일차.

클린코드[3주차_화요일]
123-131pg



#요약

6. 객체와 자료구조

1) 자료 추상화

2) 자료/객체 비대칭

3) 디미터 법칙

- 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙

   a. 기차 충돌

final String outputDir = stxt.getOptions().getScratchDir().getAbsolutePath();

    - 여러 객체가 한 줄로 이어진 기차처럼 보이기 때문에 위와 같은 코드를 기차 충돌이라고 한다.

    - 기차충돌 코드는 조잡하다.

    - 위코드를 깨끗하게 하는 법

Options opts = ctxt.getOptions();
File scratchDir = opts.getScaratchDir();
final String outputDir = scratchDir.getAbsolutePath();

 

    - 자료구조는 무조건 함수 없이 공개 변수만 포함하고 객체는 비공개 변수와 공개 함수를 포함한다면 좋다.

    - 자료구조는 디미터 법칙을 논할 필요가 없다.

 

   b. 잡종 구조

    - 위와 같은 혼란 때문에 때때로 절반은 객체, 절반은 자료 구조인 잡종구조가 나온다.

   c. 구조체 감추기

    -  객체라면 뭔가를 하라고 말해야지, 속을 드러내면 안된다.

   

4) 자료 전달 객체

- 자료 구조체의 전형적 형태는 공개 변수만 있고 함수는 없는 클래스다.

- 이런 자료 구조체는 때로는 자료 전달 객체(Data Transfer Object, DTO)라고 한다.

   a. 활성 레코드

    - 활성 레코드는 DTO의 특수한 형태

    - 활성 레코드는 데이터베이스 테이블이나 다른 소스에서 자료를 직접 변환한 결과다.

    - 활성 레코드에 비즈니스 규칙 메서드를 추가해서 이런 자료 구조를 객체 로 취급하는 코드는 자료구조도 객체도 아닌 잡종구조다.

    - 해결책은 활성구조를 자료구조로 취급한다.

 

5) 결론

- 객체는 동작을 공개하고 자료를 숨긴다.

- 어떤 시스템을 구현할 때, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다.

- 새로운 동작을 추가하는 유연성이 필요하면 자료구조와 절차적인 코드가 더 적합하다.

 

  

 


7. 오류처리

- 뭔가 잘못될 가능성은 항상 존재하고 그것을 바로 잡을 책임은 프로그래머들에게 있다.

- 우아하고 고상하게 오류처리하는 법 

 

1) 오류 코드보다 예외를 사용하라

 

 

 

 

 

 

728x90
반응형