컴퓨터공부/C & C++ & STL

Clean Code 6장 정리

achivenKakao 2014. 8. 7. 02:45

6. 객체와 자료구조


추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스이다.

아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다.

클래스와 객체지향 기법 : 새로운 자료 타입 추가(핵심 알고리즘은 같으나 여러 종류의 타입 요구)

절차적 코드와 자료구조 : 새로운 함수가 필요(기능적 추가)

디미터 법칙

1. 클래스 c

2. f 가 생성한 객체

3. f 인수로 넘어온 객체

4. C 인스턴스 변수에 저장된 객체

: 객체의 메소드가 리턴하는 메소드를 호출하지 마라.

ex) final String outputdir = ctxt.getOptions().getScratchDir().getAbsolutePath();

ctxt, options, ScratchDir이 객체를 리턴한다면 내부 구조를 숨겨야 하는 디미터 법칙에 위배,

이 자료구조를 리턴한다면 사용해도 된다.

잡종 구조

절반은 객체, 절반은 자료구조인 잡종 구조 > 단점만 모아 놓은 구조

활성 레코드 

활성 레코드는 자료 구조로 취급한다. 

비즈니스 규칙을 담으면서 내부 자료를 숨기는 객체는 따로 생성한다.

: [활성 레코드](자료구조 + 조회/설정) + [비즈니스 규칙] : 좋은 구조

: [자료구조] + [조회/설정/비즈니스 규칙] : 나쁜 구조, 비즈니스 규칙이 자료구조를 변경 시킬 경우가 많다.