티스토리 뷰
요약에 들어가기 전에 <클린코드>에서 말하는 객체와 자료구조의 의미 차이를 정리해둘 필요가 있어서 여기에 정리해둔다. 실제 현업에서도 이런 것을 자료구조라고 하는지는 모르겠지만. 객체란 자료를 숨기고 공개한 함수로 그 숨긴 자료를 다루는 것이고, 자료구조는 자료는 공개하되 아무 메서드도 제공하지 않는 것을 말한다. 객체라고 하면 private으로 인스턴스 변수를 선언하고 그 외의 메서드들을 가지고 있지만, 자료구조는 멤버변수만을 가지고 있는 것이다.
이 책에서는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다고, 아무 생각없이 getter/setter 메서드를 만드는 것이 제일 나쁘다고 한다.
객체(객체지향기법)와 자료구조(절차적인 코드)는 요약 전에 설명한 것 같은 차이가 있기 때문에 서로 상반된 의미를 갖는다. 객체지향기법은 새 함수를 추가할 때, 기존 함수의 변경이 불가피하지만, 절차적인 코드는 객체지향기법보다 새 클래스를 추가하기 쉽다. 반면 새로운 자료 타입이 필요할 때는 객체지향기법이 적합하다. 결국 프로그래머는 객체지향이건 절차지향이건 본인의 상황에 가장 적합한 방법으로 코드를 짜야 한다는 것이다.
woowacourse.github.io/javable/post/2020-06-02-law-of-demeter/
위 링크는 이제 이야기할 디미터 법칙을 설명하고 있는 우아한 테크코스 링크이다. 위 링크에서 설명하고 있는 디미터의 법칙의 핵심은 한마디로 객체 구조의 경로를 따라 멀리 떨어져 있는 낯선 객체에 메시지를 보내는 설계는 피하라는 것이다.
int result=txt.getXXX().getXXX().getXXX()
위와 같이 어떤 함수가 반환하는 객체의 함수를 호출하고 또 그 반환객체의 함수를 호출하는... 이런 코드를 기차 충돌(train wreck)이라고 부른다고 이 책은 설명하고 있고, 이런 코드는 피하라고 한다. 이런 코드는 단계별로 풀어서 쓰는 것이 좋다고 한다.
'클린코드' 카테고리의 다른 글
[클린코드 요약] 8. 경계 (0) | 2021.04.07 |
---|---|
[클린코드 요약] 7. 오류 처리 (0) | 2021.04.03 |
[클린코드 요약] 5. 형식 맞추기 (0) | 2021.03.08 |
[클린코드 요약] 4. 주석 (0) | 2021.03.07 |
[클린코드 요약] 3. 함수 (0) | 2021.03.07 |