본문 바로가기
Book/객체지향의 사실과 오해

[책 리뷰] 객체지향의 사실과 오해

by 따라쟁이개발자 2023. 1. 2.

책 정보

https://book.naver.com/bookdb/book_detail.nhn?bid=9145968

 

객체지향의 사실과 오해 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 


서론

나의 첫 회사는 대기업 계열사에 소속된 IT 회사였다

다른 계열사들의 시스템을 유지보수하는 업무를 맡았었는데, 오래 전 만든 시스템을 문제 생기지 않게 보수하고 운영하는 일이었기 때문에

대부분 오래된 소스들이었고 그 안에서도 설계를 포함한 개발을 할 기회는 잘 없었다.

 

이직 후,

만들어진지 5년도 안된 따끈한 시스템을 맡게 되었고 운영이 아닌 개발 직무를 담당하게 되면서

6년만에 처음으로 (부끄럽게도..) 설계를 포함한 기능 개발을 해보게 되었다.

 

막상 진짜 설계/개발을 해보고 나니 그제서야

이제껏 해왔던 시스템들이 모두 잘못되어 있었다(또는 너무 구시대 소스였다)를 깨닫게 되었고

내 머리 속에 있는 잘못된 기초지식들을 지워야겠다는 생각이 들어 급하게 책을 구매해 읽어보게 되었다.

 


본론

과거 예능에서 이경규아저씨가 나와 했던 말이 있다.

 

내가 클래스의 역할에 대해, 인터페이스의 사용 목적에 대해, 객체의 진짜 의미에 대해 고민했던 적이 있었나?

 

내가 이 책을 읽기 전 했던 잘못된 생각들 목록이다.

  1. Interface는 구현체의 껍데기일 뿐이다. (필요없지만 그냥 만들라고 해서 만드는거다.)
  2. Model 객체들은 필드들의 집합일 뿐이다. 대충 용도만 맞으면 한 객체에 몰아넣어도 된다. (오히려 좋다)
  3. 새로운 기능을 개발할 때 비슷한 기능을 하는게 이미 있다면, 복사해서 붙여 넣는다.
    (굳이 기존 소스를 고쳐 재사용하려 들지 않는다)
  4. 새로운 기능을 개발할 때 머리속에 그린 개념을 그대로 클래스로 옮기고 그대로 DB table로 옮기는게 좋다. 
  5. 한 메뉴 또는 한 모듈당 Controller - Service - DAO 가 한 본씩 새로 따지는게 좋다.
    다른 모듈을 참조하는 건 분석만 번거롭게 한다.
  6. 맞는 방법이라고 할 순 없지만 위에서 쓴 방법들이 유지보수 하긴 편하다

 

놀랍게도 부서의 모든 구성원이 위와 같이 개발하고 있었고,

오히려 위와 같이 하기를 권장하는 분위기였다. 

 

지금와서 왜였을까 생각해본다면,

애초 개발보단 운영에 가까운 일을 하는 부서였기에 개발에 오랜 시간을 쏟는 걸 달가워 하지 않았고

시스템이 처음부터 그렇게 개발이 되었기에 운영하는 모두가 기존과 다른 포맷이 들어오는 걸 원하지 않아서 였지 않았을까 싶다.
(아마도, 메뉴부터 table까지 한 방에 타고가는 패턴이 좋았기에) 

 

이후 새로운 곳으로 회사를 옮겨 이전보다 최신의, 좋은 소스들을 많이 보게 되었지만

불행하게도 고착화된 나의 개발 습관은 쉽게 고쳐지지 않았다.

객체 지향이라고 하는게 그저 겉만 번지르한 개념 같아 보였달까..
뭐가 문제인지 모르겠고 그냥 내가 해 온 방식이 맞다고 생각했다.

 

그래서 더욱 내가 이 책을 읽게된 것이 행운이었다고 말할 수 있을 것 같다.

 

저자는 나와 같은 사람들이 해왔던 객체지향에 대한 오해들을 정확히 꼬집어준다.

마치 내 머리속에 들어와서 다 훓어보고 이렇게 말하는 것 같았다.

'너 클래스가 객체라고 생각했지?', '객체지향은 현실세계만 본따면 되는줄 알았지?', '상태값부터 모아놓고 기능 만들기 시작했었지?'

 

그리고 하나 하나 그 오해들이 왜 잘못되었고 진짜 사실은 어떤 것이었는지 설명해준다.

클래스는 구현을 위한 수단일 뿐이며, 객체지향은 현실을 재구성한 또 다른 세계이고, 객체는 협력을 위한 메시지로 구성된 존재들이다 라고

 

저자는 객체지향 세계를 동화 '이상한 나라의 앨리스'와 비교하며 설명한다.

'앨리스'라는 객체가 '이상한 나라'라는 객체지향 세계에 들어가 겪었던 일들을 에피소드 형식으로 하나씩 풀어가며

객체지향 세계를 어떻게 이해하면 되는지 '이상한 나라'에 연관지어 차근차근 설명해준다.

 

그리고, 객체지향 세계를 어느정도 이해하고 나서는 우리가 앞으로 어떻게 개발하면 되는지

왜 이런 개발 방식이 맞는지도 다양한 예시와 함께 설명해주는데 그 예시들이 너무 와닿아서 '아 이런 느낌이구나!' 라고 깨닫게 만들어준다.

 

이 책은 이해하기 쉬워서 개발에 입문한지 얼마 되지 않은 사람들에게도 좋겠지만

나처럼 '잘 모르는 상태에서 무식한 신념만 가졌던' 개발자가 읽으면 너무 좋은 책이다.

 

대부분의 개발자가 읽는 책은 개념보단 주로 기술을 위한 책이고 많은 책들에서 객체지향이 어떤 것이다라고 자주 얘기되긴 하지만

이 책처럼 진정한 객체지향이란 어떤 것이며, 너가 이런 오해를 했다면 진짜 사실은 이것이다 라고 한땀 한땀 설명해주는 책은 잘 못봤다.

 

객체지향이 아직도 허공에 뜬 개념이라고 느껴진다면 이 책을 꼭 읽어볼 것을 추천한다.

 

댓글