반응형
😀 책에서 기억하고 싶은 내용을 써보세요.
- 변경하기 쉬운 클래스
- 깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다.
- OCP(Open-Closed Principle)
- 클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한다는 객체 지향 설계에서 핵심 원칙
- 이상적인 시스템이라면 새 기능을 추가할 때 시스템을 확장할 뿐 기존 코드를 변경하지는 않는다.
- 변경으로부터 격리
- 요구사항은 변하기 마련이다. 따라서 코드도 변하기 마련이다.
- 상세한 구현에 의존하는 클라이언트 클래스는 구현이 바뀌면 위험에 빠진다.
그래서 우리는 인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리한다. - 상세한 구현에 의존하는 코드는 테스트가 어렵다.
- 시스템의 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다.
- 결합도가 낮다는 소리는 각 시스템 요소가 다른 요소로부터 그리고 변경으로부터 잘 격리되어 있다는 의미다.
- 시스템 요소가 서로 잘 격리되어 있으면 각 요소를 이해하기도 더 쉬워진다.
- DIP(Dependency Inversion Principle)
- 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙이다.
🤔 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.
- OCP, DIP 등 객체지향 선계의 핵심 원칙을 단순히 개념만 공부하는 정도로 했다는 걸 느꼈습니다.
=> "OCP는 이거다!"라는 개념이 아니라 빌드업 형식으로 책에서 설명해 이해에 도움되었습니다. - 강한 결합도의 코드를 짜서 프로젝트의 방향성이 조금만 바뀌어도 프로젝트가 흔들린 경험이 있습니다.
=> '위와 같은 개념을 알고 있었다면 프로젝트에서 어떻게 적용했을까?'라는 생각을 했습니다.
=> 당장 적용하는 것은 힘들겠지만, 코드를 작성하고 리팩터링 하면서 배워야겠다고 느꼈습니다.
🔎 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- 이런 원칙을 지키기 위해서는 어떻게 해야 할까?
- 직접 더러운 코드를 작성해보고 잘 작성한 사람의 코드를 봐야 된다고 생각합니다.
- 좋은 책을 쓰기 위해서는 잘 작성한 사람의 책을 보고 분석하는 것과 비슷한 것 같습니다.
👀 소감 3줄 요약
- OCP -> 클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한다.
- 시스템의 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다.
- DIP -> 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다.
반응형