C#에서 코드 재사용성을 높이는 핵심: 인터페이스
C#에서 코드를 재사용 가능하게 만들고 싶다면 인터페이스(Interface)를 활용하는 것이 가장 효과적입니다. 인터페이스는 속성(property), 메서드(method), 이벤트(event) 같은 멤버들을 정의하며, 이 멤버들이 곧 인터페이스의 구성 요소가 됩니다.
중요한 점은 인터페이스에는 멤버의 선언부만 포함된다는 것입니다. 실제 구현은 이를 상속받는 파생 클래스의 책임이며, 덕분에 인터페이스는 파생 클래스가 반드시 따라야 할 표준적인 구조를 제공하는 역할을 합니다.
인터페이스 예제: IShape
예를 들어, 다음과 같은 도형(Shape) 인터페이스를 살펴보겠습니다.
public interface IShape {
void display();
}위 코드에서 Shape 인터페이스를 선언했습니다. 여기서 주목할 점은 인터페이스 이름이 대문자 "I"로 시작한다는 것입니다. 인터페이스 이름 앞에 "I"를 붙이는 것은 C# 커뮤니티에서 널리 통용되는 명명 규칙(naming convention)입니다.
또한 위 예제에서는 접근 지정자(access modifier)를 별도로 명시하지 않았는데, 그 이유는 인터페이스 멤버가 기본적으로 public으로 간주되기 때문입니다.
다형성과 코드 재사용의 관계
실제 애플리케이션 개발 환경에서 코드 재사용의 핵심은 다형성(Polymorphism)입니다. 인터페이스는 매우 유연한데, 인터페이스를 사용하면 해당 인터페이스를 구현하는 어떤 객체든 자유롭게 전달하고 교체할 수 있기 때문입니다.
즉, 메서드의 매개변수 타입을 인터페이스로 지정해 두면, 나중에 새로운 클래스가 추가되더라도 기존 코드를 수정하지 않고도 기능을 확장할 수 있습니다. 이것이 바로 인터페이스 기반 설계가 유지보수성과 확장성에 강한 이유입니다.