ITEM 27 :: EFFECTIVE C#


안녕하세요, 27번째 시간입니다.


이번 챕터는 인터페이스는 간략히 정의하고 기능의 확장은 확장 메서드를 사용하라, 입니다. 인터페이스에 사용될지 안될지 애매한 함수의 원형을 무분별하게 추가하면 이후 무조건 구현을 해줘야 하는 부분이 있고, 그에 따라서 종속성이 커지기 마련입니다. 인터페이스가 바뀌면 이전 인터페이스를 사용했던 곳에서 전부 구현을 추가해줘야 되는 문제점도 있습니다. 따라서, 그러한 경우를 방지하기 위한 챕터라고 볼 수 있습니다.

설명

  1. 인터페이스에는 가능한 한 최소한의 기능만을 정의하고, 확장 메서드를 세트로 함께 구현하면 손쉽게 기능 을 확장할 수 있다. 특히 API를 추가적으로 정의하지 않고도 새로운 기능을 추가할 수 있다.

  2. 확장메서드 기법을 사용했을 때 장점은, 1) 이미 구현하고 있는 클래스를 수정할 필요가 없다는 점이다. 메서드를 생성했다고 다른 구현한 장소에서 메서드를 추가로 구현해줄 필요가 없다는 것이다.

  3. 즉, 인터페이스를 구현할 때에는 꼭 필요한 기능에 대해서만 구현을 하고, 추가적인, 혹은 확장적인 기능에 대해서는 확장 메서드를 사용하자.

  4. 이는 사용자에게 더 풍부한 기능을 제공하고, 필수로 구현해야하는 메소드수도 자연스럽게 줄어 코드의 수가 줄어들게 된다.

  5. 여러 클래스에서 반드시 구현해야 하는 인터페이스를 정의하는 경우 인터페이스 내에 정의하는 멤버의 수를 최소한으로 하기위해 노력해야 한다.

  6. 이미 클래스 내에 구현한 메서드를 확장 메서드로 구현할 경우, 동일한 기능을 수행하게 하는 것이 좋다. 그래야 프로그램에서 오류가 발생하지 않을 확률이 높아진다.