코드 중복 vs. 잘못된 추상화
개발자들은 종종 선택의 기로에서 고민에 빠집니다.
'중복을 피하라(Don't Repeat Yourself)' 원칙을 따를 것인지, 아니면 어느 정도의 코드 중복을 허용할 것인지 선택해야 합니다.
DRY는 소프트웨어 설계의 핵심 원칙입니다. 하지만 이를 너무 과하게 추구하면 새로운 문제가 발생합니다. 바로 잘못된 추상화를 만드는 것입니다.
잘못된 추상화는 중복된 코드보다 더 큰 비용을 초래합니다.
우리는 우아한 코드를 작성하고 싶어 합니다. 재사용 가능한 로직을 구축하고 싶어 합니다. 한 곳에서 버그를 수정하면 모든 곳에서 수정되기를 바랍니다. 이러한 목표는 매우 타당해 보입니다.
하지만 성급한 추상화는 프로젝트의 속도를 저하시킵니다. 또한 코드 유지보수의 용이성을 해칩니다.
너무 일찍 추상화를 시도하면 다음과 같은 문제에 직면하게 됩니다:
- 복잡성 증가. 잘못된 추상화는 혼란의 층을 더합니다.
- 경직된 코드. 다른 부분을 망가뜨리지 않고 한 부분만 변경하기가 어려워집니다.
- 숨겨진 로직. 코드를 작성하는 시간보다 코드를 추적하는 데 더 많은 시간을 쓰게 됩니다.
때로는 중복이 실용적인 선택이 될 수 있습니다. 중복은 코드를 단순하고 명확하게 유지해 줍니다. 또한 시스템의 각 부분을 독립적으로 변경할 수 있게 해줍니다.
아직 완전히 이해하지 못한 문제에 대해 일반적인(generic) 솔루션을 만들지 마세요. 패턴이 명확해질 때까지 기다리십시오.