Clean Code 제 5장. 객체와 자료 구조

1 분 소요

자료 구조와 객체의 차이, 디미터 규칙, DTO에 대해서 설명한다.

test

0. 주관적 결론.

  • 자료 구조와 객체의 장단점을 알고 적재적소에 사용하자.

1. 자료 구조와 객체.

객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬운 반면, 기존 객쳉 새 동작을 추가하기는 어렵다.

자료 구조는 별다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에서 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다.

  정의 장점 단점
자료구조 1. 내부의 변수를 공개
2. 함수를 별도의 Class 로 존재함
기존 함수의 변경 없이, 새로운 자료 타입을 추가하기 쉽다. 상속한 새로운 함수를 추가하면 상속한 클래스를 고쳐야 한다.
객체 1. 내부 변수 비공개
2. 함수를 상속을 통해 구현
새로운 자료 타입 추가 없이, 새로운 함수를 추가하기 쉽니다. 새로운 자료구조를 추가하면 도든 함수를 고쳐야 한다.

2. 디미터 법칙

객체에 해당하는 법칙으로, 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙이다.

기차 충돌

final String something = someInstance.getOptions().getParameters().getName();

위와 같이 함수호출을 ‘.’을 연결해서 호출하는 방식을 기차 충돌이라고 한다. 위 코드는 Options와 Parameters를 숨기지 못해서 디미터 법칙을 위한한다. 객체라도 내부 구조를 숨겨야 한다.

구조체 감추기

디미터 법칙을 준수하기 위해, 함수를 단일 함수로 호출하도록 구조를 변경한다.

final String something = someInstance.getParameterName();

잡종구조

자료 구조와 객체를 섞어서 사용하는 구조다. 저자는 단점을 섞어놓은 구조이기 때문에 피하라고 명시한다.

3. 자료 전달 객체

DTO(Data Transfer Object) 라고 한다. 공개 변수만 있고 함수가 없는 클래스로, 주로 데이터베이스와 소켓 메시지 구문을 분석할 때 유용하다.