728x90
함수를 매개변수로 사용하는 것의 장점
- 개발자가 더 이상 concreate type을 작성할 필요가 없어진다.
- 추상화된 정의를 통해 종속성을 다룬다.
인터페이스와 클래스 분리의 특징
- 사용자에게 클래스 계층 구조를 강제하지 않을 수 있다. (장점)
- 인터페이스만 제공하기 때문에 클라이언트 코드에서 활용할 수 있는 재사용 가능 코드를 제공하기 어렵다. (단점)
인터페이스 대신 델리게이트를 사용하는 이유
델리게이트가 타입을 구성하는 핵심 구성요소가 아니기 때문이다.
델리게이트는 메서드 중 하나로 간주되지 않는다.
함수를 매개변수로 사용하는 것
장점
- 알고리즘 자체와 알고리즘을 적용할 타입을 분리하는데 도움이 된다.
- 컴포넌트를 사용하는 측과 컴포넌트를 구현하는 측의 코드를 분리할 수 있다.
단점
- 추가 비용이 발생한다.
- 코드의 명확성이 떨어질 수 있다.
따라서 코드를 분리해 사용자들이 얻을 수 있는 잠재적인 이득과 코드의 복잡도 증가라는 단점 사이에서 적절한 균형을 가져야 한다.
(결합도를 낮출수록 컴파일러가 제공하는 다양한 검사 기능을 활용하기 어려워지기 때문이다.)
결합도를 느슨하게 구성하기 위해
결합도를 느슨하게 구성하려면 분리된 컴포넌트를 사용할 때 발생할 오류를 처리하기 위한 추가적인 작업을 해야 한다.
- 이벤트를 발생시킬 때마다 null인지 확인해야 한다.
- 런타임 결합관계를 주의해야 한다.
반응형
'개발공부 > C#' 카테고리의 다른 글
[Effective C#] 아이템 36 : 쿼리 표현식과 메서드 호출 구문이 어떻게 대응되는지 이해하라 (0) | 2021.12.11 |
---|---|
[Effective C#] 아이템 35 : 확장 메서드는 절대 오버로드하지 마라 (0) | 2021.12.10 |
[Effective C#] 아이템 32 : Action, Predicate, Function과 순회 방식을 분리하라 (0) | 2021.12.08 |
[Effective C#] 아이템 31 : 시퀀스에 사용할 수 있는 조합 가능한 API를 작성해라 (0) | 2021.12.07 |
[Effective C#] 아이템 30: 루프보다 쿼리 구문이 낫다. (0) | 2021.12.06 |