洪民憙 (홍민희) 블로그

중복 제거라는 말에 대해 생각해본다. 중복을 제거하는 이유는 그것이 아름답기 때문이 아니다. 같은 코드를 여러 번 안 써도 되니까 코드 분량이 짧아져서도 아니다. 그것은 부수적인 좋은 효과긴 하지만, 그게 가장 중요한 이유는 아니다. 키보드 덜 쳐서도 아니다. 그것 역시 부수적인 좋은 효과지만, 키보드를 덜 치려면 복사–붙여넣기를 해도 된다.

중복을 제거하는 가장 큰 이유는 고칠 때 한 곳만 고쳐도 되기 때문일 것이다. 한 곳만 고쳐도 다 같이 고쳐지면 어떤 장점이 있을까? 일단 같은 여러 곳을 찾아다니는 수고가 준다. 하지만 조금 더 유용한 장점은 고쳐야 하는데 실수로 빼먹는 버그가 줄어든다는 점이다.

반대로 얘기하자면, 같은 동작을 하는 코드라도 수정할 때 함께 고쳐지면 안되는 코드는 중복 제거를 하면 안된다. 이는 중복 제거라는 말의 함정이다. 마찬가지로 DRY라는 말에도 같은 함정이 숨어있다. 중복’이라거나 ‘반복 같은 말을 쓰면 사람들은 알게 모르게 그 자체를 목표로 하여 책상도 다리가 넷이니까 사지 동물 같은 식의 추상화를 하게 된다. 혹은 사지라는 믹스인을 만들어서 강아지에도 붙이고 고양이에도 붙이고, 책상에도 붙이게 된다.

차라리 각 의도마다 하나의 구현만 같은 표현이 좀더 명확하고 오해를 더는데 낫지 않을까?