본문 바로가기
공부 기록

[클린코드] 6장. 객체와 자료구조

by 매트(Mat) 2024. 4. 18.

6장. 객체와 자료구조

변수를 왜 private으로 접근을 막는지 이유를 알 것이다.

자료 추상화

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

  • 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다.
  • 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다.

자료/객체 비대칭

  • 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다.
  • 자료구조는 자료를 그대로 공개하면 별다른 함수는 제공하지 않는다.

두 개념은 사실상 정반대다.

복잡한 시스템을 짜다 보면 새로운 함수가 아니라 새로운 자료 타입이 필요한 경우가 생긴다. 이때는 클래스와ㅏ 객체 지향 기법이 가장 적합하고, 새로운 자료 타입이 아니라 새로운 함수가 필요한 경우도 생긴다. 이때는 절차적인 코드와 자료구조가 좀 더 적합하다.

디미터 법칙

모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙이다. 객체는 조회 함수로 내부 구조를 공개하면 안된다.

자료 전달 객체

자료 구조체의 전형적인 형태는 공개 변수만 있고 함수가 없는 클래스다. 이런 자료 구조체를 자료 전달 객체(DTO: Data Transfer Object)라 한다.

DTO는 데이터베이스와 통신하거나 소켓에서 받은 메시지의 구문을 분석할 때 유용하다.

  • 좀 더 일반적인 형태는 빈(Bean) 구조다.

결론

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

따라서 어떤 시스템을 구현하느냐에 따라 유연성 있게 개발할 수 있다.

References

'공부 기록' 카테고리의 다른 글

[클린코드] 8장. 경계  (0) 2024.04.22
[클린코드] 7장. 오류 처리  (1) 2024.04.19
[클린코드] 5장. 형식 맞추기  (0) 2024.04.17
[클린코드] 4장. 주석  (0) 2024.04.16
[클린코드] 3장. 함수  (0) 2024.04.15

댓글