[실용주의 프로그래머] 결합도 줄이기와 디미터 법칙 |
구부러지거나 부러지거나
-
유연함을 유지하는 한 가지 좋은 방법은 가능한 적은 양의 코드를 작성하는 것이다.
-
코드를 세포(모듈)로 구성하고, 이들 간의 상호작용을 제한하라.
그러면 한 모듈이 변경되거나 교체된다 하더라도 다른 모듈들은 변경 없이 수행될 수 있다.
결합도 줄이기
-
의존의 증가가 나쁜 이유는 시스템 어딘가의 무관한 변화가 여러분의 코드에 영향을 미칠 수 있는 위험이 커지기 때문이다.
이렇게 되면 개발자가 수정한 부분이 시스템에 어떤 영향을 미칠지 몰라 코드의 수정을 두려워하게 된다.
디미터 함수 법칙
-
디미터 함수 법칙은 프로그램에서 모듈간 결합도를 최소화하려 시도한다.
이 법칙은 한 객체가 제공하는 메서드에 접근하기 위해 또 다른 객체들을 통하는 것을 허용하지 않는다.
-
모듈간의 결합도를 최소화하라.
확실히 차이를 낳는가?
-
디미터 법칙은 객체의 모든 메서드는 다음에 해당하는 메서드만을 호출해야 한다고 말한다.
1. 자신에 정의된 함수
2. 메서드로 넘어온 인자의 함수
3. 자신이 생성한 객체의 함수
4. 직접 포함하고 있는 객체의 함수
-
디미터 법칙은 코드를 더 적응성 있고 강하게 만들어 주지만 ‘주계약자(general contractor)’로서의 대가를 치러야 한다. 주계약자는 모든 하부 계약자를 직접 관리하고, 이들에게 일을 위임해주어야 한다.
실제로 이는 위임자에게 단순히 요청을 전달하는 역할만을 하는 간단한 위임 메서드를 상당수 만들어야 함을 의미한다.
이러한 위임 메서드는 성능 저하와 메모리 과부하와 같은 문제를 야기할 수 있는데, 이러한 문제는 어떤 종류의 앱에서는 심각할 수도 있고, 심지어 절대 금해야 하는 것일 수도 있다.
'프로그래밍 놀이터 > Tips' 카테고리의 다른 글
[실용주의 프로그래머] 시간적 결합 (0) | 2018.10.31 |
---|---|
[실용주의 프로그래머] 메타 프로그래밍 (0) | 2018.10.30 |
[실용주의 프로그래머] 리소스 사용의 균형 (0) | 2018.10.28 |
[실용주의 프로그래머] 언제 예외를 사용할까 (0) | 2018.10.27 |
[실용주의 프로그래머] 단정적 프로그래밍 (0) | 2018.10.26 |
댓글