다형성의 중요성

chiyongs·2024년 6월 7일
1

과도한 책임

빠르게 피처를 만들어내고 출시하는 과정을 반복하다 보면 하나의 클래스가 과도한 책임을 지게 되는 경우가 종종 발생하는 것 같습니다.
기존 클래스에 새로운 요구사항을 덧붙여서 빠르게 피처를 구현하려다 보면, 특정 상황에서 그 클래스가 다르게 사용되어야 할 때 확장성 부족으로 문제가 발생하게 되죠.

다형성이란 무엇일까요?

제가 생각하는 다형성(Polymorphism)은 객체지향 프로그래밍의 중요한 개념 중 하나입니다.
같은 인터페이스를 구현한 다양한 객체들이 각기 다른 방식으로 동작할 수 있게 하는 것을 말하죠.
이게 왜 중요하냐면, 코드의 유연성과 재사용성을 높여주기 때문이에요.
새로운 기능을 추가할 때 기존 코드를 수정하지 않아도 되는 장점도 있구요.

인터페이스란?

인터페이스는 제 생각에 클래스나 컴포넌트가 제공하는 기능을 외부에 노출하기 위한 일종의 계약(Contract)입니다.
인터페이스는 구현체가 아닌, 객체가 수행할 수 있는 동작을 정의하죠.
이렇게 하면 개발자는 구체적인 구현 방법에 의존하지 않고, 인터페이스를 통해 객체 간의 상호작용을 설계할 수 있어요.

자동차와 바퀴의 비유

자동차를 예로 들어볼게요. 자동차에는 바퀴가 필요합니다.
바퀴는 자동차가 원하는 방향으로 나아가도록 돕죠.
그런데 세상에는 동그란 바퀴만 있는 게 아니에요.
네모난 바퀴나 별 모양의 바퀴를 사용하고 싶을 때도 있을 겁니다.
이처럼 다양한 요구사항을 반영하려면, 확장성이 높은 설계가 필요합니다.

예기치 못한 요구사항에 대비하기

개발자로서 우리는 항상 예기치 못한 요구사항에 대비할 수 있도록 코드를 설계해야 한다고 생각해요.
확장성이 높은 코드는 새로운 요구사항에 쉽게 대처할 수 있어, 완전히 새로운 코드를 작성해야 하는 최악의 상황을 방지할 수 있죠.
이는 단순히 코드의 유지보수성을 높이는 것을 넘어, 개발 과정의 효율성을 극대화하는 핵심 요소라고 봅니다.

확장성 높은 코드 설계의 중요성

실제로 일을 하다 보면 확장성이 부족한 코드 때문에 작업 시간이 더 소요되는 경우가 자주 있어요.
하지만 이는 해당 코드를 작성한 사람의 잘못이 아닙니다.
당시에는 그것이 최선의 방법이었을 것이고, 지금의 요구사항 변화가 그 코드를 수정해야 하는 시점이라고 생각합니다.

느낀 점

실무를 하면서 배우다보니 더더욱 다형성과 인터페이스를 통해 확장성 높은 설계를 해야 한다고 생각합니다.
이렇게 하면 변화하는 요구사항에 유연하게 대응이 가능해집니다.
또한, 개발 과정에서의 효율성을 높이고, 장기적으로 유지보수와 확장이 용이한 시스템을 구축하는 데 중요한 역할을 합니다.

0개의 댓글