더북(TheBook)

3.1.4 공통적인 기능을 분리하라

그림 3-3은 웹 계층이 DB 계층과 공통적인 기능을 가질 수 없다는 것을 의미하는가? 아니, 물론 가질 수 있다. 그러나 그런 경우에는 별도의 구성 요소가 필요하다. 예를 들어 두 계층 모두 공통적인 모델 클래스에 의존적일 수 있다. 이 경우 그림 3-4와 같은 관계 다이어그램을 사용할 수 있다.

▲ 그림 3-4 추상화를 위반하지 않고 공통적인 기능 추출하기

코드를 리팩터링하면 빌드 프로세스가 중단되거나 테스트가 실패할 수 있다. 또한, 이론적으로 절대 해서는 안 되는 짓이다. 하지만 나는 이러한 위반을 숨겨진 문제라고 생각한다. 즉시 이러한 문제에 주의를 기울여야 하고, 만약 이 과정에서 버그가 더 많이 발생한다면 코드가 작동을 멈춘 것이 아니라 이미 그곳에 있었던 버그가 이제서야 알아차리기 쉽게 드러난 것뿐이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.