책 & 스터디

object 스터디를 마치며..

haong_ 2024. 5. 31. 16:35

올해 1월부터 사내에서 FE/BE/DATA 주니어들을 모아 object 책으로 스터디를 진행했다. object는 객체지향 설계를 다루고 있는 책으로 개발 추천 도서에 꼭 등장하는 책이다. 보통 처음 객체지향에 대해 공부하게 되면 추상화, 다형성, 캡슐화, 상속 이렇게 네가지를 그냥 외우곤한다. 나 또한 처음엔 이론적인 부분을 외우기에 급급했기 때문에 깊은 뜻에 대해서는 이해하지 못한채로 지내왔다. 책에서는 객체지향의 세부원칙들이 어떤 경우에 어떤 목적을 이루기 위해서 나오게 되었는지 자세한 예시코드와 함께 깊이있게 설명을 해준다. 이런 예시들을 보면서 단순하게만 알고 있던 부분에 대해  "아 그래서 그런거였구나!" 하고 깨닫는 순간들이 종종 있었다. 

그 중 인상깊었던 부분을 몇가지 소개하자면,

  1. SOLID 원칙에서 D인 의존성 역전(DIP)이 왜 '역전'이라는 워딩을 사용했는지 너무 헷갈렸었는데 세부구현체가 아니라 추상화에 의존하게 함으로써 마치 의존성이 역전된것 같기 때문에 저런 표현을 사용하게 되었다는 것을 알게되었다.
  2. 상속을 단순히 코드 재사용 용도라고 생각했는데 그게 아니고 타입 계층 설계를 위한 용도라는 것. 타입 계층 설계를 통해 공통 부분을 묶고, 자식클래스들은 각 특성에 맞게 확장가능한 구조를 만드는 것이 상속이 나오게 된 배경이다.
  3. 캡슐화라는 단어를 처음듣고 이해했을때는 변경되지 않을 부분에 대해서 캡슐화를 통해 고정시켜 놓는건가? 라고 생각했었다. 하지만 오히려 변경이 일어날 부분에 대해서 캡슐화를 통해 감싸놔야한다는 것을 알게됐다. 구체가 아니라 캡슐화된 추상 인터페이스에 의존하게해야 변경에 대해 알 필요가 없어져 변하지 않는 부분에 영향을 주지 않으면서 수정하거나 확장이 가능하다. 
    결국 객체지향은 추상화와 캡슐화를 통해 변경에는 닫혀있고 확장에는 열려있게 하며, 상속과 다형성을 통해 타입계층 구조를 만들어서 객체끼리 일관성있는 협력을 할 수 있게 만드는 하나의 패러다임이라는 것을 이해할 수 있었다. 

이번 스터디를 하며 좋았던 점은 발표할 때 다른 팀에서 실제 업무에 쓰는 코드 예시들을 가져와서 이야기하는 시간이 있었던 것이다. 개발할때 실제 코드를 치는 시간보다 어디까지 추상화해서 끌어올릴 것인지 설계하는 부분이 제일 오래걸리는데, 프론트도 백엔드도 다 비슷한 고민을 하며 작업하고 있었구나 하는 것을 알았다. 덕분에 어떤 점을 고민하고 있는지 또 어떤식으로 접근해서 해결할 수 있는지 이야기 나눌 수 있어 유익하고 알찬 시간이었다. 책을 읽으며 수박겉핥기 식으로 알고 있던 객체지향에 대해 한번 더 생각해보고 SOLID 원칙이 왜 나왔는지 자연스럽게 이해할 수 있었다. 괜히 추천 서적이 아닌듯. 그리고 확실히 혼자 책읽고 정리하는 것보다 사람들과 스터디하는게 압박은 조금 있지만 훨씬 더 도움이 되는 것 같다. 연차 별로 읽을 때마다 다른걸 느낄 수 있다고 하니 기억에서 잊혀질때쯤 다시 꺼내봐야겠다. 

한줄평 : 두고두고 읽으면 좋을 객체지향의 바이블