더북(TheBook)

경계를 넘는 것은 왜 좋지 않은걸까? 그 이유는 바로 추상화의 장점을 없애기 때문이다. 하위 계층의 복잡성을 상위 계층으로 끌어올리면 하위 계층에서 일어나는 모든 변경 사항과 그 영향을 관리해야 한다. 각각의 구성원이 각자의 계층을 책임지는 팀이 있다고 생각해 보자. 경계를 넘는다면 웹 계층의 개발자가 갑자기 SQL을 배워야 할 수도 있다. 이뿐만 아니라 DB 계층의 개발자가 필요 이상으로 많은 사람과 소통해야 할 수도 있다. 결국 개발자에게 불필요한 책임과 부담만 지울 뿐이다. 사람들을 납득시킬 합의점을 찾기 위한 시간만 기하급수적으로 늘어날 것이다. 시간도, 추상화의 가치도 잃게 된다.

이러한 경계 문제와 마주친다면 코드를 깨버려 동작이 멈추게 하고, 위반 요소를 제거하고, 코드를 리팩터링하고, 그 영향을 처리하라. 코드에 의존하는 다른 부분도 수정해야 한다. 이런 경우에는 코드를 깰 위험이 있더라도 방심하지 말고 즉시 차단해야 한다. 코드가 깨지는 것을 두려워한다면 그것은 잘못 설계된 코드이다. 좋은 코드는 깨지지 않는다는 뜻이 아니다. 깨졌을 때 조각을 다시 붙이는 것이 훨씬 더 쉽다는 뜻이다.

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