아래는 마이클 C. 페더스의 레거시 코드 활용 전략 21장을 읽고 정리한 내용입니다.
리팩토링을 통해 중복을 줄이면 설계가 좀 더 orthogonal 해지는 효과가 있다. 즉, 특정 동작에 변경이 필요한 경우 일부분만 수정하여 원하는 변경을 구현하는 것이 가능하다. 이것은 개방 폐쇄 원칙 (Open Close Principle) 과도 일맥상통하다.
직교적 (orthogonal) 이라는 단어가 생소할 수 있다. 단어만 놓고 보면 어떤 것들이 “직각”을 이룬다는 것이다. 서로 수직인 x 축과 y 축의 선분을 상상하고, 거기에 x 축과 평행한 방향으로 조명을 비춘다고 상상해보자: x 축의 선분은 y 축의 선분에 그림자를 드리우지 않는다. 마찬가지로 y 축 방향으로 조명을 비추면, y 축의 선분이 x 축의 선분에 그림자를 드리우지 않는다. 이처럼 직교성은 한 방면으로의 동작이 다른 방면에 영향을 끼치지 않는 “독립성”이라 간주할 수 있다.
(주의: 지금부턴 다소 주관적인 내 생각이다.) 그렇다고 중복도를 무조건 낮추는 것이 바람직할까? 당장은 그렇지만, 지금 같은 동작을 하는 클래스들이 나중에는 추가 요구사항으로 인해 다르게 동작해야 할 수도 있을 것이다. 시간이 경과하고 다른 작업들을 하면서 중복도를 낮춘 작업이 실제로 효과가 있었는지, 다시 구현을 변경해야 했는지 등 검토가 필요할 것 같다. 현실은 내 머릿속 처럼만 동작하지 않는다–테스트나 로그분석 등을 통해 실제 현상을 관찰하지 않고 머리로만 생각하는 것은 자만이다.