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

Regular Kim·2025년 1월 16일
0

서평

목록 보기
4/4
  • 저자 : 조영호
  • 출판연도 : 20150617
  • 분량 : 260쪽
  • 링크 : 교보문고

시스템은 역할과 책임을 수행하는 객체로 분할되고 시스템의 기능은 객체 간의 연쇄적인 요청과 응답의 흐름으로 구성된 협력으로 구현된다.

객체지향을 프로그래밍 언어 공부할 때 지겹도록 공부하지만 되려 언어에 초점이 맞춰 설명하다 보니 "객체지향"을 주제로 공부한 경험은 없었다. 코드 재사용을 줄이고, 인터페이스를 구현하고, 클래스는 하나의 책임만 갖게 하고, 클래스 내부의 상태나 메서드는 외부에서 접근하지 못하게 하고 등등 객체지향의 성격이나 형태의 설명은 알고 있었다. 그렇지만 정작 '그래서 객체지향이 뭔데?'라고 묻는다면 대답은 '모르겠다.' 뿐이었다. 그래서 이 책을 읽게 되었다.

책은 '이상한 나라의 앨리스'를 활용해 객체지향 개념을 설명한다. 다양한 인물들과 그들이 처한 사건이 등장하고, 사건에서 인물들이 어떤 역할을 하는지 설명하며 객체에 대해 이야기하는 방식이다. 좋았던 점은 클래스에서 인스턴스로, 즉 위에서 아래로 내려가는 설명 전개가 아니었다는 점이다. 카드 병사들의 특징을 먼저 이야기하면서 그들의 공통점을 뽑아내 추상화하고 이 추상화를 클래스로 설명하는 바텀 업 방식의 설명 구조가 신선한 접근이었다.

이 책을 읽고 객체지향을 희미하게나마 이해하게 되었다. 나름 대답을 해보자면 아래와 같다.

애플리케이션은 하나의 코드 덩어리가 아니다. 작은 객체들로 이루어진 생태계다. 이 작은 객체들은 서로 협력하며 애플리케이션이란 세상을 굴러가게 한다.
객체는 메시지를 주고받으며 요청을 처리한다. 자신이 처리할 수 있으면 응답하고, 그렇지 않으면 다른 객체에 요청을 전달한다.
이 과정에서 중요한 점은, 요청을 보낸 객체는 결과만 받으면 되지 그 과정에 관여하지 않는다는 점이다. 요청한 객체는 결과에만 집중하며, 그 과정의 내부 메커니즘은 각 객체가 스스로 책임진다.

책을 읽고 협력의 관점으로 애플리케이션을 바라보게 되었다. 예전에는 애플리케이션을 여러 객체의 협력체가 아닌, 하나의 거대한 코드 덩어리로만 인식했다. 기능 구현에만 급급해 전체적인 설계보다는 개별 작업에만 집중했다. 그러나 이 책을 통해 협력이라는 관점에서 바라보니, 이전에 작성했던 코드의 문제점이 떠올랐다. 전지전능한 "GOD 클래스"를 만들어 이 클래스가 뭐든지 해결하도록 했던 과거의 내가 불현듯 떠올라 부끄러움을 느끼는 순간이었다.

물론 너무 몰입돼서는 안 된다고 생각한다. 객체지향은 방법이 아닌 철학이다. 그래서 GOD 클래스 같은 위 방법이 꼭 나쁘다고만 할 수는 없다. 뭐가 됐든 작동하는 코드가 아름답기만 하고 기능 없는 코드보다 비교할 수 없을 만큼 값지기 때문이다. 그렇지만 왜 객체를 지향해야 하냐면 그 특유의 아름다움도 있겠지만 변화에 대응하기 위해서라고 대답하겠다. 프로젝트는 단기적으로 마무리되지 않기 때문에, 따라서 미래 변화에 대응하기 위해, 이 과정에서 신속한 피드백을 위해 객체를 지향한다고 말하겠다.

profile
What doesn't kill you, makes you stronger

0개의 댓글

관련 채용 정보