[Clean Code] 클린 코드(Clean Code) 6장 '객체와 자료구조' 요약

jiveloper·2023년 12월 18일
0

Clean Code

목록 보기
6/6
post-thumbnail

6장 객체와 자료구조

(자료 구조를 사용하는) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 어렵다.

반대쪽도 참이다.

절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야한다. 객체 지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야한다.


다시 말해, 객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은 객체 지향 코드에서 쉽다!


👩🏻‍💻 💡
이번 6장에서는 내용도 적었고 나에게 크게 와닿는 내용이 없었기 때문에, 6장에 나온 디미터 법칙에 대해 요약하고, 추가로 공부한 내용을 정리하였다.

디미터 법칙

디미터 법칙은 잘 알려진 휴리스틱으로, 모듈은 자신이 조작하는 객체의 속사정을 몰라야한다는 법칙이다.
간단히 말하면 아래의 메소드만 호출하는 규칙들을 지키며 결합도를 낮추는 법칙이다.

  • 객체 자신의 메소드들
  • 파라미터로 넘어온 객체들의 메소드들
  • 메소드 안에서 생성되거나 초기화된 메소드들
  • 자신이 직접 소유하는 객체의 메소드들
  • 파라미터로 접근이 가능한 전역 변수의 메소드들

기차 충돌

const obj = object.getChild()
  .getContent()
  .getItem()
  .getTitle();

흔히 위와 같은 코드를 기차 충돌이라 부른다. 여러 객차가 한 줄로 이어진 기차처럼 보이기 때문이다. 일반적으로 조잡하다 여겨지는 방식이므로 피하는 편이 좋다. 이런식으로 호출하면 obj는 getChild, getContent, getItem, getTitle 함수에 모두 의존적이게 된다.


의존하면서 결합도가 높아지기 때문에, 함수형 프로그래밍의 지향점(함수는 결합도↓, 응집도↑일수록 이상적이다.)을 위반한다. 최대한 노출 범위를 제한해서 유지보수가 쉽게 해야한다.



결론

⭐️⭐️⭐️ 디미터 법칙을 지킬수록 결합도는 느슨해진다. 디미터 법칙을 지키자!



참고

https://hongjinhyeon.tistory.com/138

https://hungryjayy.github.io/posts/%EB%94%94%EB%AF%B8%ED%84%B0_%EB%B2%95%EC%B9%99/#%EB%94%94%EB%AF%B8%ED%84%B0-%EB%B2%95%EC%B9%99%EC%9D%B4-%ED%95%98%EB%82%98%EC%9D%98-%EC%9D%84-%EA%B0%95%EC%A0%9C%ED%95%98%EB%8A%94-%EA%B7%9C%EC%B9%99%EC%9D%80-%EC%95%84%EB%8B%88%EB%8B%A4

profile
👩🏻‍💻 Clean Code와 Refactoring에 관심이 많은 개발자 입니다.

0개의 댓글