diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 515e77de..df0e64ad 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1 +1,2 @@ - [rheh](https://github.com/rheh) - Suggestion - Brooks's Law +- [Two-Jay](https://github.com/Two-Jay) - PR - The Law of Demeter \ No newline at end of file diff --git a/README.md b/README.md index efcdadc0..fe0dd5eb 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ * [스포티파이 모델](#스포티파이-모델) * [와들러의 법칙](#와들러의-법칙) * [휘턴의 법칙](#휘턴의-법칙) + * [디미터의 법칙](#디미터의-법칙) * [원칙](#원칙) * [딜버트의 법칙](#딜버트의-법칙) @@ -621,6 +622,25 @@ _성급한 최적화_ 란 (좁은 의미로) 그것이 꼭 필요한지 알기
+### 디미터의 법칙 + +[The Law of Demeter](https://www2.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/general-formulation.html) + +> 낯선 이와 대화하지 말라. +> +> 화자 미상 + +최소 지식 원칙이라고도 부르는 디미터의 법칙은, 객체지향 프로그래밍에서 책임에 대한 캡슐화와 느슨한 커플링을 다룰 때에 중요하게 여겨지는 법칙이다. 이는 특정한 객체의 메소드에서 정보를 다룰 때 직접적으로 알고 있는 대상만을 호출함으로써 책임이 적절하게 분배되지 않거나 복잡한 커플링을 가져서 발생하는 문제를 방지할 수 있도록 유도한다. + +디미터의 원칙에 따르면 호출하는 객체가 c이고 메소드가 f 일때 객체의 메소드 f는 아래의 4가지만 호출할 수 있다. + +- c, 즉 객체 자기자신 +- f가 생성한 객체 +- f에 매개변수로 전달된 모든 정보 +- 객체 c의 인스턴스에 저장된 필드 + +
+ ## 원칙 원칙들은 일반적으로 설계의 가이드라인과도 같다.