더북(TheBook)

3.4 스스로 반복하라

반복이나 복사-붙여넣기 형태의 프로그래밍은 소프트웨어 개발 분야에서 선호하지 않는 개념이다. 괜찮은 충고가 대부분 그렇듯이, 결국 하나의 종교처럼 변질되고, 사람을 고통스럽게 한다.

이 개념을 선호하지 않는 이유는 다음과 같다. 코드를 하나 작성한다. 다른 곳에서 동일한 코드가 필요하다. 초보자의 성향상 같은 코드를 복사해서 붙여넣고 사용할 것이다. 지금까지는 다 괜찮다. 그러나 이후 복사해 붙여넣은 하나의 코드에서 버그가 발견된다. 이제 코드 두 군데를 변경해야 하며 둘을 동기화시켜야 한다. 일이 더 많아지고 결국에는 마감일을 놓치게 될 것이다.

있을 법한 이야기 아닌가? 이 문제에 대한 해결책은 복사-붙여넣기를 하는 대신 코드를 공유 클래스나 모듈에 넣고 두 군데에서 이 공유 클래스를 사용하는 것이다. 공유 코드를 변경하면 이를 참조하는 모든 곳에서 마법처럼 코드가 변경되므로 시간을 많이 절약할 수 있다.

지금까지는 다 좋다. 하지만 이것이 항상 옳은 것은 아니다. 이 원칙을 상상할 수 있는 모든 상황에 맹목적으로 적용한다면 문제가 발생할 것이다. 코드를 재사용할 수 있는 클래스로 리팩터링하려고 할 때 한 가지 놓치기 쉬운 부분은 사용자가 본질적으로 새로운 종속성을 생성하며 이 종속성이 설계에 영향을 미친다는 것이다. 심지어 때로는 무언가를 더 해야 할 수도 있다.

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