더북(TheBook)

3.1.2 빠르게 옮기고 깨버리자

컴파일도 안 되는 데다 테스트에 실패할 수도 있는데 왜 코드를 깨야 할까? 서로 얽혀 있는 의존성이 코드의 경직성을 유발하여 변화에 저항성을 갖게 하기 때문이다. 이것은 시간이 지날수록 여러분을 더 느리게 만들며, 결국 여러분을 멈추게 할 것이다. 초반에 종속성을 끊는 것이 더 쉽기 때문에 당장 코드가 잘 동작하더라도 이러한 문제를 인식하고 코드를 깨야 한다. 그림 3-2에서 종속성이 우리 손을 어떻게 묶어 놓는지를 볼 수 있다.

종속성이 없는 구성 요소를 수정하는 것이 가장 쉽다. 그 외 다른 것을 깨뜨리는 것은 불가능하다. 어떤 구성 요소가 다른 구성 요소 중 하나에 의존하는 경우, 종속성은 일종의 계약을 의미하기 때문에 이때는 약간의 경직성이 발생한다.

이는 B에서 인터페이스를 변경하면 A도 변경해야 한다는 의미이다. 인터페이스를 변경하지 않고 B의 구현을 변경하더라도 일단 B를 부순 셈이기 때문에 A를 깰 수 있다. 단일 구성 요소에 종속된 구성 요소가 여러 개일 경우 문제는 더 커진다.

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