CleanCode - 객체와 자료 구조
책에서 정의하는 객체와 자료 구조의 정의부터 알아보겠습니다.
객체 : 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다.
자료구조 : 자료를 그대로 공개하며 별다른 함수를 제공하지 않는다.
객체와 자료구조는 근본적으로 양분됩니다.
아래 2가지 문장이 그 예시인데, 모두 참인 문장입니다.
'절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다.
반면 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가히기 쉽다.'
'절차적인 코드는 새로운 자료구조를 추가하기 어렵다. 객체 지향 코드는 새로운 함수를 추가하기 어렵다.'
객체와 자료구조는 각각 적합한 경우가 있습니다.
새로운 함수가 아니라 새로운 자료 타입이 필요한 경우 -> 클래스와 객체 지향 기법이 적합
새로운 자료 타입이 아니라 새로운 함수가 필요한 경우 -> 절차적인 코드와 자료구조가 적합
그리고 추가적으로 DTO에 대해서도 설명을 하는데, DTO를 간단히 정리하면 아래와 같습니다.
자료 전달 객체 (DTO)
- 공개 변수만 있고 함수가 없는 클래스
- DB와 통신하거나 API/WS에서 받은 데이터를 처리할 때 유용
- DB 데이터를 애플리케이션 코드에서 사용할 객체로 변환하는 일련의 단계에서 가장 처음 사용하는 구조체
마무리
시스템에 따라 객체가 적합할수도 있고 절차적인 코드와 자료구조가 적합할 수 있습니다. 어느 하나가 우수하거나 맞는 방법이라고는 할 수 없습니다.
그러므로 좋은 개발자는 편견없이 이 사실을 이해하고 직면한 문제에서 최적의 해결책을 선택해야 합니다.
'CleanCode' 카테고리의 다른 글
[CleanCode] 경계 (0) | 2023.11.11 |
---|---|
[CleanCode] 오류 처리 (0) | 2023.11.10 |
[CleanCode] 형식 맞추기 (2) | 2023.11.04 |
[CleanCode] 주석 (0) | 2023.10.21 |
[CleanCode] 함수 (0) | 2023.10.12 |