본문 바로가기

CS/CS Book

[오브젝트] ch04 설계 품질과 트레이드오프

후기

데이터 중심 설계의 단점을 언급한다. 상태를 기반으로 하고 설계라는 것은 결국 변화할 수밖에 없는데 초기에 데이터에 집중해서 만들다 보면 추상화가 아닌 구체화가 되고 캡슐화안된 코드가 나오게 되어서 좋지 않다라고 나는 이해하였다.

응집도결합도에 대해서도 여러 코드를 기반으로 설명해 준다.

 

읽으면서 드는 생각은 내가 그동안 주로 죽어있는 프로그램을 만들었구나라는 생각이었다.

한번 만들고 계속 유저가 있어서 피드백 받는 프로그램들이 아니었기에 처음 설계한 방식에서 바뀔 일이 잘 없었다. 코드가 보기 좋지 않아서 수정하는 정도가 아닌 다음에는 기능적으로 변경이나 추가가 없었다.

그랬기에 책에서 나오는 데이터 중심으로 설계한 프로그램의 사례의 단점이 확 와닿지 않았다.

나쁜 설계와 좋은 설계를 같이 놓고 보아야 더 와닿는다는데 객체지향을 어디까지나 글로 보고 있어서 무언가 나와는 동떨어지게 느껴진다.

요구사항의 변경과 그에 따른 설계의 변화를 여러 번 겪어 보아야 책에서 말하는 부분들이 피부로 느낄 수 있을 거 같다.

 

이번 챕터에는 캡슐화를 더욱 강조한다 생각했다.

캡슐화를 해야 변화에 유연하다. 캡슐화는 외부에서 보았을 때 내부가 짐작되지 않아야 한다.

내부에 뭐가 어떻게 되어있는지 몰라야 외부 변화에 휘둘리지 않고 변경하기 좋아서라고 이해되었다.

 

 

데이터 중심 설계에 대한 비판이 인상 깊었다.

데이터 중심 애플리케이션 설계라는 책이 꽤나 해외, 국내에서 호평을 받고 있었기에 책에서는 상반된 의견이 흥미로웠다.

분명 지금 오브젝트 책의 보이는 사례에서는 캡슐화가 잘 안 되어서 결합도는 높아지고 응집도는 낮은 변화에 취약한 코드가 만들어지므로 저자분이 지적하는 단점이 납득되었지만 다른 관점에서 프로그래밍에 대해 쓴 책이 좋은 평을 받는다는 점이 둘의 차이점과 그 둘이 각 각 장점을 드러낼 수 있는 부분은 무엇일까 싶다.

 

혹시 “오브젝트” 책에서 말하는 데이터 중심과 “데이터 중심 애플리케이션 설계”라는 데이터 중심이 서로 다른 걸까 싶다.

안 그래도 저 책을 나중에 스터디로 하고 싶었는데 지금 스터디가 끝나면 해보자고 슬쩍 영업을 시작해 봐야겠다.

 

좋은 설계를 보는 관점좋지 않은 설계는 왜 안 좋다 생각하는지 알 수 있어 유익했고 나의 프로그래밍이 어떠했는지, 어떤 프로그램들을 만들어왔는지 되돌아볼 수 있어 의미 있었다.