2023년 4월 19일 작성

Clean Code - 객체와 자료 구조를 구분하여 사용하기

객체와 자료 구조는 언뜻 보기에 비슷하지만, 사실은 서로 반대되는 특징을 가지고 있습니다.

자료 추상화

  • 구현을 감추기 위해서는 추상화가 필요합니다.
  • 변수 사이에 함수라는 계층을 넣는다고 해서 구현이 감춰지지는 않습니다.
    • 변수를 private으로 선언 하더라도 각 값마다 조회 함수(getter)와 설정 함수(setter)를 제공한다면, 구현을 외부로 노출하는 것과 같습니다.
  • 추상 interface를 제공하여 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 class라고 할 수 있습니다.

객체 & 자료 구조

  • 객체와 자료 구조는 반대되는 특징을 가집니다.
객체 자료 구조
추상화 뒤로 자료를 숨긴 채, 자료를 다루는 함수만 공개합니다. 자료를 그대로 공개하며 별다른 함수는 제공하지 않습니다.
동작을 공개하고 자료를 숨깁니다. 별다른 동작 없이 자료를 노출합니다.
객체 지향 code에 적합합니다. 절차 지향 code에 적합합니다.
새 객체 type을 추가하기 쉽습니다. 새 동작을 추가하기 쉽습니다.
기존 객체에 새 동작을 추가하기 어렵습니다. 기존 함수에 새 자료 구조를 추가하기 어렵습니다.
  • 객체가 더 적합한 상항이 있고, 자료 구조가 더 적합한 상황이 있습니다.

Reference

  • Clean Code (도서) - Robert C. Martin

목차