목록으로
'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선 읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.

데이터 수집 서비스 리팩토링: 상속보다 컴포지션 채택하기

데이터 수집 서비스 리팩토링: 상속보다 합성을 선택하다

개요

우리의 데이터 수집 서비스는 과도한 상속 사용으로 인해 지나치게 복잡해졌습니다. 처음에는 상속이 적절한 선택처럼 보였지만, 시간이 지남에 따라 코드의 확장성과 유지보수성이 저하되었고, 클래스 간의 결합도가 높아지는 문제가 발생했습니다.

상속의 문제점

  • 높은 결합도 : 상속은 클래스 간에 강한 의존성을 만들어 부모 클래스의 변경이 자식 클래스에 예기치 않은 영향을 미칩니다.
  • 유연성 제한 : 상속 구조는 고정적이어서 새로운 요구사항이나 변경에 유연하게 대응하기 어렵습니다.
  • 코드 중복 : 새로운 기능을 추가하거나 변경하려면 코드를 중복하거나 재정의해야 하는 경우가 많아 유지보수가 복잡해집니다.

합성의 도입

이러한 문제를 해결하기 위해 우리는 상속 대신 합성을 활용하는 방향으로 리팩토링을 진행했습니다.
  • 낮은 결합도 : 합성은 클래스가 다른 클래스의 인스턴스를 포함함으로써 모듈 간의 의존성을 줄이고 더 유연한 구조를 제공합니다.
  • 향상된 유연성 : 필요한 기능을 다양한 구성 요소의 조합으로 쉽게 변경하고 확장할 수 있습니다.
  • 개선된 유지보수성 : 개별 구성 요소를 독립적으로 개발하고 테스트할 수 있어 전체 시스템의 안정성이 높아집니다.

리팩토링 과정

  1. 역할 분리 : 클래스의 각 기능과 책임을 명확히 분리하여 모듈화했습니다.
  2. 구성 요소 개발 : 특정 기능을 수행하는 독립적인 구성 요소를 개발했습니다.
  3. 구성 요소 조합 : 필요한 기능을 구현하기 위해 구성 요소들을 조합하여 사용했습니다.

리팩토링 결과

  • 코드 간소화 : 코드 구조가 더 명료해지고 이해하기 쉬워졌습니다.
  • 확장성 증대 : 새로운 기능 추가와 변경이 용이해졌습니다.
  • 테스트 용이성 향상 : 각 구성 요소를 별도로 테스트할 수 있어 품질이 향상되었습니다.

결론

상속에서 합성으로의 전환을 통해 데이터 수집 서비스의 유연성과 유지보수성이 크게 향상되었으며, 이는 향후 개발에서도 중요한 기반이 될 것입니다.

함께 읽으면 좋은 자료

  • "디자인 패턴: 재사용성을 지닌 객체지향 소프트웨어의 핵심 요소"
  • "합성 대 상속"
  • "클린 코드: 애자일 소프트웨어 장인 정신"

푸딩캠프 뉴스레터를 구독하면 학습과 성장, 기술에 관해 요약된 컨텐츠를 매주 편하게 받아보실 수 있습니다.