코드 품질 개선하기 - 세션 55: 데메테르의 법칙
·2025.11.28 11:00
데메테르의 법칙을 단순히 적용하기보다 정보 은닉과 캡슐화의 관점에서 지식의 경계를 이해하는 것이 중요하다.
프로그래밍 원칙 중 하나인 **데메테르의 법칙(Law of Demeter)**은 객체가 자신이 직접 아는 멤버(속성/메서드)하고만 상호작용해야 한다는 원칙입니다. 흔히 "친구하고만 이야기하라"고 표현하며, 객체 간의 결합도를 낮추는 데 목적이 있습니다.
구체적으로 메서드 호출 시 수신자(Receiver)는 다음과 같은 경우로 제한되어야 합니다.
this(자기 자신)this의 필드 또는 속성- 함수의 인자로 전달된 객체
- 함수 내부에서 직접 생성된 객체
- 전역 변수 또는 싱글톤 객체
반면, 속성의 반환 값을 다시 호출하거나 인자의 속성을 타고 들어가는 방식은 법칙을 위반하는 사례입니다. 하지만 단순히 법칙을 지키기 위해 코드를 분리하는 것이 항상 정답은 아닙니다.
예를 들어, 체인 형태의 메서드 호출을 피하기 위해 별도의 함수로 추출하는 리팩토링을 수행할 때, 이것이 진정한 의미의 **정보 은닉(Information Hiding)**과 **캡슐화(Encapsulation)**를 실현하고 있는지, 아니면 단순히 표면적인 규칙만 따르고 있는 것인지 경계의 관점에서 고민해야 합니다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.