패스잇
CS 기초 · 심화

오래된 레거시 시스템은 종종 'God Object'나 'Feature Envy'와 같은 안티 패턴으로 인해 유지보수가 어렵고 확장성이 떨어집니다. 이러한 레거시 코드베이스를 점진적으로 리팩토링하여 디자인 패턴을 적용하고자 할 때, 어떤 전략과 패턴을 사용하여 기존 기능을 손상시키지 않으면서 코드 품질을 향상시킬 수 있을지 구체적인 단계와 적용 가능한 패턴(예: Strategy, Facade, Adapter)을 제시하여 설명해주세요.

힌트 · 점진적 리팩토링은 기존 기능을 보호하면서 작은 단위로 개선하는 것입니다. Facade로 복잡한 서브시스템을 감싸고, Strategy로 변하는 부분을 분리하며, Adapter로 호환되지 않는 인터페이스를 연결하는 방법을 고려할 수 있습니다.

스트랭글러 패턴테스트 주도 개발 (TDD)추상화Facade 패턴Adapter 패턴

모범답안

레거시 시스템 리팩토링은 조심스럽게 접근해야 합니다. 먼저, '스트랭글러 패턴'을 적용하여 기존 시스템을 점진적으로 대체하는 방식을 고려합니다. 새로운 기능은 새로운 아키텍처로 개발하고, 기존 기능은 리팩토링을 통해 점진적으로 옮겨가는 것이죠.

리팩토링 시에는 '테스트 주도 개발(TDD)'을 적극 활용하여 기존 기능이 변경 후에도 정상적으로 작동하는지 확인합니다. 'Facade' 패턴을 사용하여 복잡한 레거시 시스템의 인터페이스를 단순화하고, 'Strategy' 패턴으로 알고리즘을 캡슐화하여 변경에 유연하게 대처할 수 있도록 합니다. 또한, 'Adapter' 패턴을 사용하여 새로운 인터페이스와 기존 인터페이스 간의 호환성을 확보합니다.

예를 들어, 결제 시스템의 복잡한 로직을 Facade로 감싸고, 다양한 결제 방식을 Strategy 패턴으로 구현하여 새로운 결제 방식 추가에 용이하도록 만들 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 디자인 패턴 면접 질문

← 디자인 패턴 면접 질문 전체 보기