일상

객체지향의 사실과 오해를 읽고

motosw3600 2021. 12. 7. 15:48
<출처> 객체지향의 사실과 오해 

부스트캠프의 마스터 JK님의 추천으로 이책을 읽게 되었습니다.

책 이름처럼 흔히 생각하는 객체지향의 일반적 사고를 깨주면서 궁극적으로 좋은 소프트웨어를 만들기 위해

어떤 설계와 구조를 가지면서 소프트웨어를 구성해야하는지 소개하고 있습니다.

책에서 아마 가장 많이 나온 말 중에 하나가 역할, 책임, 협력 이 세가지 단어 라고 생각합니다.

객체지향을 설계할 때 객체 자체의 속성과 행동에 중점을 맞추지 말고 객체간의 협력에 중점을 맞춰서 객체가 가져야 할 역할

역할을 수행하기 위한 책임을 중점으로 책의 내용이 구성되어 있습니다.

보통 객체지향하면 클래스가 우선적으로 생각나고 코드를 작성할 때도 각 객체가 가져야 할 속성과 객체에 필요한 메서드에 중점을 맞춰 구성을 하곤 했습니다. 이런 구조를 가지고 설계를 하다 보면 객체지향이 가져야 될 속성(추상화, 캡슐화, 다형성..) 등이 유연하게 동작하지 않는 구조에 많이 봉착하기도 했습니다. 일반적인 객체지향에 대한 생각으로만 접근했지 어떻게 접근해서 설계해야 할지에 대한 자세한 생각은 하지 못한채 객체지향 자체에 중점을 두고 설계를 했었던 것 같습니다.

 

객체 지향 설계 원칙인 SOLID원칙에서도 결국 재사용이 용이하고 인터페이스를 분리하여 확장엔 열려있고 수정에는 닫혀있는 유지보수에 용이한 설계 구조를 정의해 주고 있습니다. 이 책에서도 결국 좋은 객체지향의 방향을 알려주면서 어떤 방식으로 객체지향에 접근해야 할지 알려주고 있습니다.

부스트캠프의 마스터 JK님이 해주신 말 중에 어느 소프트웨어 디자인패턴(ex MVC, MVVM, MVP...)으로 구성 하는게 중요한 것이 아니라고 말씀해 주신적이 있습니다. 결국 개발자가 어떤 구조로 만드느냐가 중요하다고 생각합니다. 좋은 구조와 설계에 대한 답은 없겠지만 추상화, 다형성, 캡슐화, 인터페이스 분리, 설계의 유연성과 재사용성이 좋은 소프트웨어를 만드는 것이 좋은 제품과 소프트웨어를 만드는 목표라고 생각하고 있습니다.

한번에 모든 내용이 이해되지는 않았지만 더 좋은 구조와 설계를 위해 고민하고 있던참에 이책을 읽고 조금은 생각이 정리 되었던 것 같습니다.

+ 책 안에서도 코드에 대한 비중은 많이 없고 책표지의 토끼 모양처럼 이상한 나라의 앨리스 내용을 비유를 들어 설명해 주고 있음으로 쉽게 이해하고 재밌게 읽을 수 있었습니다. 개발자를 희망하거나 시작하는 사람들이 읽으면 아마 읽었던 전과 후가 소프트웨어를 임하는 태도가 더 좋은 방향으로 자리 잡지 않을까 생각 듭니다:)