GoogleTechTalks의 "The Clean Code Talks -- Inheritance, Polymorphism, & Testing" 을 참고하여 정리하고 각색하였습니다. https://www.youtube.com/watch?v=4F72VULWFvc if문을 제거합시다. 왜 if문을 제거해야 할까요? (이 포스팅에서는 switch문을 포함한 모든 조건문을 if문이라고 칭하겠습니다.) if 문은 코드의 가독성을 저해시킵니다. if 문은 테스트를 불편하게 만듭니다. if 문은 유지보수하기 어렵게 만듭니다. 모든 if문을 제거할 수는 없습니다. 다만, 대부분의 if문은 다형성을 이용하여서 제거 될 수 있습니다. 다형성을 활용하여 제거 할 수 있는 if문은 2가지 경우가 있습니다. 객체가 다른 상태에 ..
의존관계 DI를 알아보기 이전에 의존(Dependency)이라는 키워드에 대해서 알아봅시다. 예를들어, A라는 클래스가 B라는 클래스를 내부적으로 사용하게 되면 A는 B에게 의존하는 관계입니다. UML으로 표시하면 아래와 같습니다. 출처 : http://www.cs.utsa.edu/~cs3443/uml/uml.html 위의 UML을 보면 Person이라는 클래스가 Book이라는 클래스를 내부적으로 사용합니다. 그리고 Book이라는 클래스를 점선 화살표로 가르키게 되는데 이러한 관계를 Person이 Book에게 '의존'한다 라고 합니다. (추가적으로, DI를 처음 배울 때 이상한 점이 있었습니다. 스프링의 DI관계를 자세히 보면, 의존보다는 엄밀히 말해 '연관'이 맞다고 생각했습니다. 근데 왜 의존이라고 ..