마무리

오브젝트 마지막장 요약한 내용 입니다.

오브젝트 마지막장 요약한 내용 입니다.

엘리스터 코어번은 사람들이 새로운 기술을 학습하기 위해서는 일반적으로 세 가지 단계를 거치게 된다고 설명한다. 코어번은 이 세 가지 단계를 '따라 하는 수준', '분리 수준', '거침없는 수준'이라고 부른다.

  • '따라 하는 수준' : 적합한 열 가지의 절차가 있더라도 모든 절차를 한번에 습득하는 것은 불가능하기 때문에 가장 쉽게 배울 수 있는 단 한 가지 절차를 학습하고 그대로 모방한다.

  • '분리 수준' : 오직 단 하나의 절차 만으로는 모든 문제를 해결할 수 없다는 사실을 깨닫고 다양한 절차를 학습하고 트레이드 오프 한다.

  • '거침없는 수준' : 이른 사람은 많은 학습과 경험을 통해 즉시 적절한 해법을 직관적으로 떠올릴 수 있을 뿐만 아니라 때로는 자신만의 방법에 따라 문제를 해결하기도 한다.

따라서 이 책에서 설명하는 원칙과 기법들을 여러분의 실무에 적용하기 위해서는 다양한 상황을 트레이드 오프할 수 있는 능력을 길러야 한다.

이 책에서 설명하는 특정한 절차와 원칙을 따르면 훌륭한 객체지향 설계를 할 수 있고, 더 나아가 유연한 객체지향 프로그램을 작성할 수 있다고 생각할 것이다. 안타깝게도 여러분이 '따라 하는 수준'에 머물러 있다면 이 책에서 다루는 다양한 원칙기법들을 적용하기가 생각보다 쉽지 않다는 사실을 알 수 있을 것이다. 따라서 다음과 같은 방법들을 통해 다양한 설계 기법을 익히고 통찰력을 길러 '분리 수준'을 향해 나아가야 한다.

  • 디자인 패턴 : 반복적으로 발생하는 문제와 해법의 쌍을 담고 있기 때문에 문제에 적합한 디자인 패턴을 고른다면 고품질의 설계를 짧은 시간에 얻을 수 있는 지름길을 제공한다.

  • 리팩터링 : 리팩터링은 코드의 행동은 변경하지 않은 채 코드의 구조를 개선하는 활동을 의미한다. 설계는 코드의 배치 이므로 코드의 구조를 개선한다는 것을 곧 설계를 개선한다는 것을 의미한다.

  • 테스트-주도 개발 : 테스트-주도 개발은 마지막 단계인 '거침없는 수준'에 이른 사람들이 제시한 독창적인 설계 방법 중 하나다. 테스트-주고 개발은 전통적인 설계-구현-테스트의 순서로 수행되는 구현 절차를 테스트-구현-설계의 순서로 바뀐다.

어떤 경우에도 이 책에서 배운 캡슐화, 응집도, 결합도의 정의와 원칙은 유효하며 객체지향 패러다임의 중심에는 역할, 책임, 협력이 위치한다는 것이다. 우리가 해야할 일은 이 책에서 제시하는 원칙이 적합하지 않은 지점을 만났을 때 이상현실 안에 안전하게 정착하도록 설계를 약간 비트는 것뿐이다.

Last updated