코드숨 스터디로 '객체지향의 사실과 오해' 를 읽었다.
책에서 인상깊게 읽었던 부분들을 기록한다.
그 외에도 좋은 내용이 많지만 다 적기엔 너무 많아서 여기까지만 써야될 것 같다.
객체지향은 현실 세계를 코드로 구현해 놓은 것이라는 이야기를 자주 들었는데, 실제로 코드에서는 실제 객체가 하지 못하는 추가적인 기능을 한다는 구절이 굉장히 인상깊게 들어왔다.
전혀 생각도 못했던 부분이라 신선했다. 여태 잘 아는 개념이 아니어서 몰랐는데 말로만 들었을 땐 현실의 객체를 그대로 옮겨야 한다고만 생각했었다. 그런데 실제로는 코드의 객체에게 더 자율성을 부여해야 매끄럽게 돌아간다니.
그 다음으로는 기능 중심으로 시작하는게 아니라 구조를 중심으로 접근해야 한다는 부분이었다.
아무 생각 없이 코드를 짜면 대부분 기능 중심으로 코드를 작성하게 된다.
클라이언트가 구조를 말하는게 아니라 원하는 기능을 말하기 때문에 개발도 그에 맞춰서 진행하면 그렇게 되기 마련이다.
그리고 뭔가 수정사항이 생기면 힘들어지는 일의 반복이었는데, 구조 중심으로 설계를 하면 그런 변화들까지 흡수하면서 개발이 가능하다는 것이 굉장히 매력적으로 느껴졌다.
아직 잘 이해는 안되지만 좀 더 공부해서 도메인 주도 설계와 디자인을 제대로 익히고 싶다.
그리고 마지막으로는 공용 인터페이스를 주고받는 구조로 개발을 하라는 것.
전에 아샬님의 영상 항상 API를 만들자 에서 주고받는 형식은 그대로 유지하면 내부를 어떻게 하든 사용하는 쪽에서는 신경 쓸 필요가 없다는 말을 듣고 인상깊었는데 상통하는 내용이라 더 열심히 보게 되었다.
객체가 내부에서 처리하는 방식이 어떻게 바뀌든 인터페이스를 통해 전달되는 메시지는 동일해야 하기 때문에 다른 객체들은 이 부분에 대해 신경 쓸 것이 없다는 것이다.
나는 여태 뭔가 바꾸거나 하면 그에 관련된 모든 코드가 다 영향을 받았다.
하지만 인터페이스를 통해 메시지를 주고받게 되면 내부에서 어떻게 바꾸든 상관없다는걸 보고 앞으로는 그렇게 개발해보려 한다.
함수형에 대한 스터디를 하다가 객체지향 책으로 스터디를 해보니 이쪽도 굉장히 매력적이구나 하는걸 느꼈다.
다음 스터디로는 '루비로 배우는 객체지향 디자인'을 읽는데, 굉장히 기대가 된다.