데메테르 법칙(Law of Demeter, LoD)은 코드가 직접 관계있는 대상과 상호작용하도록 의존 범위를 제한하는 객체 지향 설계 원칙이다. 최소 지식 원칙(Principle of Least Knowledge)이라고도 한다. 다른 객체의 내부를 연달아 들여다봐야 일을 할 수 있다면, 그 내부 구조가 바뀔 때 함께 고칠 곳이 늘어난다. ([데메테르 법칙 소개](https://www.ccs.neu.edu/home/lieber/LoD.html)) ## 얼마나 알아야 일을 할 수 있을까 - 예를 들어 도록 제작 코드가 작품 저장소의 폴더와 파일 구조를 직접 찾아다니기보다, 필요한 작품 정보를 돌려주는 기능을 호출하도록 설계해볼 수 있다. - 메서드 안에서 사용할 대상에는 전달받은 객체, 자신을 구성하는 직접적인 부분, 그 안에서 생성한 객체 등이 포함된다. 화면에 찍힌 점의 개수보다 실제로 어떤 관계에 의존하는지 살펴야 한다. ([데메테르 법칙의 객체 형식](https://www2.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/object-formulation.html)) - [[알지 않아도 되는 내부 사정|내부 구조]]를 감추면서도 외부에 필요한 기능은 분명하게 제공한다. 호출을 전달하기만 하는 층이 늘어난다면 [[KISS]]의 관점에서 그 구분이 필요한지 다시 살핀다. ## 기타 등등 - 법칙의 이름은 이를 연구하던 데메테르 프로젝트에서 왔다. 프로젝트의 이름에는 그리스 농업 여신과 소프트웨어를 조금씩 기른다는 비유가 담겨 있다. [출처](https://www.ccs.neu.edu/home/lieber/LoD.html) - 연구팀은 2003~2004년에 직접 관계있는 대상 중에서도 같은 관심사에 기여하는 대상과 소통하도록 원칙을 다듬었다. 이 확장형을 LoDC라고 부른다. [출처](https://www.ccs.neu.edu/home/lieber/LoD.html) #원칙 #프로그래밍 #설계