Spring에서 interface를 만들어야 하는 이유가 뭘까? 일주일 전 쯤 처음 spring 을 접할때 이런 의문을 가졌었고 그 후 일주일 후 개발을 진행해 가면서 이 의문이 풀리게 되었다. 토비의 책에도 나와있는 내용이지만 실제 경험을 통해 느끼게 되었다. 그 이유는 다음 3가지이다.
- 변하지 않는 소프트웨어는 없다.
- 객체지향 개념에 더 맞는다.
- 테스트를 위해서 이다.
이 중 마지막 테스트를 위해서 만든 다는 것이 진리인 것 같다. 보통 Junit 을 이용해 테스트 케이스를 만드는데 이 경우 약한 결합의 구현이 없다면 유연한 테스트가 불가능하다. 하지만 이 경우도 아니고 절대 never never 변할지 않을 부분이라면 성능 저하를 가져오면서 까지 concrete 하지 않은 구현체를 만들지 않을 필요는 없다고 생각한다. 하지만 테스트는 왠만해서는 필수다. 테스트 없는 개발은... 너무 눈가리고 뛰어가는 것과 같다고나 할까? 어디로 가고있는지 언제 넘어질 지 모르는 것 같다.