DRY 원칙
“남에게 대접받고 싶은 대로 남을 대접하라(Do to others as you want them to do to you).” 일체의 행위 규범이 이 한 문장에 담겨있다고 많은 현자가 말했다. 황금률(Golden Rule)을 따르면 만사 평온하리라.
DRY 원칙, 즉 “반복하지 마라(Don’t Repeat Yourself)”라는 말 역시 좋은 소프트웨어 개발 습관의 근원이라 할 만하다. “모든 지식 조각은 딱 한 번만 나와야 한다 ”라는 말이다.
이 한 마디가 어찌 그리도 막대한 영향을 미칠까? 먼저, 가장 중요한 SOLID의 원칙 중 일부가 DRY 원칙의 필연적 산물이다.
단일 책임 원칙이 그렇다. 이 원칙을 어긴 코드는 결과적으로 다시 쓸 수 없다. X와 Y를 함께 하는 모듈이 있다. X를 하는 코드가 필요할 때 Y 로직을 들어내지 않는 한 모듈을 재사용할 수 없으므로 또다시 X를 코딩할 수밖에 없다. DRY 원칙과 맞지 않는다.
X와 Y를 하는 함수 2개를 모듈에 주입해서 하나의 책임으로 묶어두면 문제를 해결할 수 있다. 그렇다! DRY한 코드로 만드는 과정에 의존성 주입과 단일 책임 문제가 개입된다.
d3.svg.line은 아주 DRY한 2함수다. 다른 어느 곳에서도, 심지어 데이터를 받아 좌푯값을 추출하는 부분에도 중복 코드가 하나도 없다.
2 DRY 원칙이 dry(마르다, 건조하다)라는 영어 단어와 우연히 그 이름이 같아 원저에서는 DRY한 코드, 즉 축축하여 곰팡이가 피거나 썩지 않을, ‘잘 말라 건조한’ 코드라는 비유적 의미를 재미있게 구사하고 있습니다. 한국어로는 어쩔 수 없이 ‘DRY한 코드’라고 표현할 수밖에 없지만, 원어의 의미를 떠올리면서 읽으면 마음에 더 잘 와 닿을 거로 생각합니다.