최근에 리팩토링을 진행했을 때도 원래는 Facade 패턴을 적용하다가 진행한 부분이었다. 이제 해당 부분이 모두 해결되었으니 다시 Facade 패턴을 적용한 후기를 적어보겠다.
먼저 Facade 패턴을 적용하려는 이유는 테스트 때문이었다. 나는 테스트 라인 커버리지를 높이는 것을 선호해서 mocking을 자주 사용하고 있다.
다만 같은 레벨에 있는 함수를 콜하는 것에 대해서는 mocking이 쉽지 않았다. 하지만 그렇다고 함수를 합치기에는 가독성이 심하게 떨어지는 상황.
이에 대해서 여러 고민도 해보고 주변 사람들에게 조언을 구해봤을 때 Facade 패턴을 적용하는 것이 좋다고 판단했다.
퍼사드 패턴은 라이브러리에 대한, 프레임워크에 대한 또는 다른 클래스들의 복잡한 집합에 대한 단순화된 인터페이스를 제공하는 구조적 디자인 패턴입니다.
출처: https://refactoring.guru/ko/design-patterns/facade
즉 복잡한 작업 방식을 facade에 모아둔다 정도로 해석해도 좋다.
Facade 패턴을 적용하면서 아래와 같은 규칙으로 리팩토링을 진행했다.