개발공부/C#

[Effective C#] 아이템 27 : 인터페이스는 간략히 정의하고 기능의 확장은 확장 메서드를 사용하라

개발자 찐빵이 2021. 12. 3. 00:14
728x90

확장 메서드를 이용하면 인터페이스에 새로운 동작을 추가할 수 있다. 그리고 손쉽게 기능을 확장할 수 있다.
특히 API를 추가적으로 정의하지 않고도 새로운 기능을 추가할 수 있다.

확장 메서드란

미리 정의된 형식에 사용자 정의 함수를 확장(추가) 시키는 작업.
정적으로 정의해서 인스턴스 메서드처럼 사용한다.
즉, 정적 클래스에서 정의해주고 사용할 땐 확장 메서드를 정의하는 클래스가 포함된 네임스페이스를 포함(using)해줌으로 사용한다.

사용 예시

static class ExtenstionMethods{
    public static void Print(this string s) {
        Console.WriteLine(s);
    }
}

class ExampleClass{
    public static void Main(string[] args){
        string text = "Hello from ExtensionMethods";
        text.Print();
    }
}

결과
Hello from ExtenstionMethods 가 출력된다.

메서드의 장점

  • 이미 구현하고 있는 클래스를 수정할 필요가 없다.
  • 메서드를 생성했다고 다른 장소에서 메서드를 추가로 구현해줄 필요가 없다.
  • 필수로 구현해야 하는 메서드 수를 줄일 수 있다.
  • 사용자에게 풍부한 기능을 제공할 수 있다.

구현 시 주의해야 할 점

  • 여러 클래스에서 반드시 구현해야 하는 인터페이스를 정의하는 경우 인터페이스 내에 정의하는 멤버 수를 최소한으로 해야 한다.
  • 사용자 편의를 위해 추가적으로 제공하려는 메서드는 확장 메서드의 형태로 구현하는 것이 좋다.
반응형