소프트웨어 개발 가이드라인 중 하나
최소 지식 원칙
- 한 모듈이 구현을 알아야하는 다른 모듈들을 적게 유지하자
- 결합도가 높으면 모듈을 재사용하기 힘들다
모듈들 사이의 결합도를 줄여 코드 품질을 높이는 것
규칙화
- 어떤 오브젝트(O)의 메서드(m)는 다음과 같은 오브젝트의 메서드만 호출해야 한다
- O 자신의 메서드
- m의 매개변수로 들어온 객체의 메서드
- m 안에서 생성 된 객체
- O의 컴포넌트 (A의 인스턴트 변수)
- 전역 객체
예제
class A {
private B b;
public setA(B b) {
b = b;
}
public myMethod(OtherObject other) {
// ...
}
/* 디미터의 법칙을 잘 따른 예 */
public okLawOfDemeter(Paramemter param) {
myMethod(); // 자신의 메소드
b.method(); // 자신의 멤버의 메소드
Local local = new Local();
local.method(); // 직접 생성한 객체의 메소드
param.method(); // 메소드의 인자로 넘어온 메소드
}
/* 디미터의 법칙을 어긴 예 */
public violateLawOfDemeter(Paramemter param) {
C c = param.getC();
c.method(); // 인자로 받은 객체에서의 호출.
param.getC().method(); // 위와 같음.
}
}
출처: https://coding-start.tistory.com/264 [코딩스타트]
[참조]
'프로그래밍' 카테고리의 다른 글
OWASP Top 10 2020 (0) | 2020.10.04 |
---|---|
FQDN - Fully Qualified Domain Name (0) | 2020.07.06 |
GRASP 패턴 (0) | 2020.04.22 |
TDD, BDD, DDD, RDD (0) | 2020.04.21 |
GraphQL (0) | 2019.10.01 |