객체와 자료구조

broccoli·2025년 6월 1일
0

cleancode

목록 보기
8/12

객체적구조

  • 자료를 숨기고 함수로서 자료에 접근하도록 제한한다
  • 자료구조를 캡슐화함으로서 새로운 형태의 자료타입이 필요하면 추가하거나 수정하는데 어려움이 없다.
  • 하지만 새로운 동작을 표현하는 함수를 추가해야한다면 좀 복잡해질 수 있다.

자료구조

  • 자료를 공개한다.
  • 일종에 DTO 형태라고 생각하면 된다. 따라서 자료구조의 따른 함수를 추가할때, 자료구조는 전혀 영향을 받지 않는다. 왜냐면 자료구조의 따른 함수를 구현하는 객체와 자료구조는 별개이므로

책에서는 객체적구조와 자료구조의 혼종을 만들지 말라고한다. 엄밀히 따지면 목적이 다르다고 생각이 들긴하는데, 그 경계지점의 대한 경험이 많지는 않아서 일단 개념적인 접근을 인지하고 구분하려고 생각한다.

각각의 목적에 더 적합한 방식의 구조로 개발을 해보자.

기차충돌 vs 체이닝

책에 나온 기차충돌의 개념 체이닝은 개념이 좀 달라서 구분하고 싶음

항목기차 충돌 (Train Wreck)체이닝 (Chaining)
맥락클린 코드 (Clean Code) 등에서의 코드 스타일 경고함수형 프로그래밍 등에서의 메서드 체이닝 기법
주 대상객체의 속성에 깊게 접근하는 코드 구조함수의 결과를 이어서 다음 함수로 전달하는 구조
동작 방향점(dot) 연산자를 따라 한 대상의 내부로 파고드는 구조한 연산 결과가 다음 연산의 입력이 되어 이어지는 구조
예시user.getAddress().getCity().getZipCode()array.map().filter().reduce()
목적내부 정보 접근 (속성 추출 등)값 변환 및 가공 (데이터 흐름 처리)
문제점 (가능성)강한 결합, 디미터 법칙 위반, 테스트 어려움 등과도하면 디버깅 어려움, 불명확한 흐름
의미상 유사성표면상 유사 (모두 .something().something() 구조)목적과 흐름은 명확히 다름
profile
🌃브로콜리한 개발자🌟

0개의 댓글