[개발] 클린코드(Clean Code)

클린 코드 대신 읽어드립니다 _ 6. 객체와 자료 구조 (정리, 요약, 후기)

  • -
반응형

 

1. 디미터 법칙

디미터 법칙은 잘 알려진 휴리스티heuristic으로, 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙이다. 객체는 자료를 숨기고 함수를 공객한다. 즉, 객체는 조회 함수로 내부 구조를 공개하면 안 된다는 의미다.

 

디미터 법칙 위반의 예

final String outputDir = ctxt.getOptions().getScratchDir().getAboslutePath();

: getOptions() 함수가 반환하는 객체의 getScratchDir() 함수를 호출한 후 getScratchDir() 함수가 반환하는 객체의 getAbsoutePath() 함수를 호출하기 때문이다.

 

 

 

 

 

 

 

2. 기차 충돌

흔히 위와 같은 코드를 기차 충돌 train wreck이라 부른다. 여러 객차가 한 줄로 이어진 기차처럼 보이기 때문이다. 일반적으로 조잡하다 여겨지는 방식이므로 피하는 편이 좋다.

위 코드는 다음과 같이 나누는 편이 좋다.

Options opts = ctxt.getOptions();

File scratchDir = opts.getScratchDir();

final String outputDir = scratchDir.getAbsolutePath();

 

 

 

 

 

 

 

 

3. 결론

객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다. 자료 구조는 별다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다.

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.