사이드 프로젝트를 진행하면서 프로젝트의 구조가 점점 복합해짐을 느껴 이 책을 읽게되었다.
좋은 설계
좋은 설계란 오늘 요구하는 기능을 온전히 수행하면서 내일의 변경을 매끄럽게 수용할 수 있는 설계이다.
이 책은 프로그래밍 패러다임
으로 글을 시작한다. 여기서의 패러다임의 의미는 특정 시대의 어느 성숙한 개발자 공동체에 의해 수용된 프로그래밍 방법과 문제 해결 방법, 프로그래밍 스타일이라고 할 수 있다. 개발자들은 패러다임을 배움으로써 동일한 규칙과 표준을 지킬 수 있고, 불필요한 의견 충돌을 방지할 수 있다.
프로그래밍 패러다임은 좋은 설계를 찾기 위한 프로그래머들의 역사이다. 그리고 이 책은 현재의 프로그래밍 패러다임인 객체지향 패러다임에 관한 책이다. 미래에는 새로운 더 좋은 설계 패러다임이 등장할 수 있다. 이를 통해 알 수 있는 것은 좋은 설계란 하나로 정해져있지 않다는 것이다. 객체지향설계 안에서도 많은 가지수의 설계 방식이 있을 수 있다. 각 설계는 모두 장점과 단점을 가지고 있다. 설계란 트레이드오프이다.
진정한 객체지향 설계 : 책임 주도 설계
좋은 설계란 다시말해
시스템을 객체로 나누는 것만으로는 부족하다. 시스템의 데이터와 기능을 어떤 객체에 할당해야 하는지가 문제이다.
객체지향 설계의 핵심은 적절한 객체에 적절한 책임을 할당하는 것이다.
여기서 저자는 기능의 할당에 중심을 둔 책임 주도 설계
를 왜 해야하는지 설명한다.
객체 지향 설계란 데이터와 프로세스를 객체라는 모듈 안에 위치시키는 것이다. 훌륭한 객체지향 설계란 소프트웨어를 구성하는 모든 객체들이 자율적으로 행동하는 설계이다.
어떤 클래스가 필요한지보다 어떤 객체가 필요한지 고민하라 객체를 독립적인 존재가 아니라 협력하는 공동체의 일원으로 봐야 한다.
메시지와 메서드를 구분해야한다.
추상화(Abstraction)
…작성중