클린 코더스 강의 14.1. OCP(Open-Closed Principle)
https://www.youtube.com/watch?v=dqa-IdafeIE&list=PL7pUrjEGbG8ZMPQ-XukPJsFyMeyvtGcnV&index=16
Last updated
https://www.youtube.com/watch?v=dqa-IdafeIE&list=PL7pUrjEGbG8ZMPQ-XukPJsFyMeyvtGcnV&index=16
Last updated
새로운 타입의 readConsole
이 추가된다면 copy
함수는 변경을 요구하게 된다.
즉, 새로운 변경이 일어나 Copy 함수는 변경되지 않는다.
OCP 를 사용할 경우 의존성의 방향
main partition: main 함수에는 if else 가 존재하게 된다. Crystal ball: 우리는 미래를 예측할 수 없다.
OCP
와 LSP
는 밀접하게 연관되어 있다.
OCP 원칙이 어긋났다는 것은 LSP 원칙을 선행해서 어긋나고 있는 것이다.
OCP 의 문제 중 Main partition 은 생성 - 사용
관계에서 모듈안에서의 if ~ else
를 제거하기 위하여 main
함수로 밀어내는 과정이다.
Main 함수까지 if ~ else
를 밀어내면 유연한 변화를 가진 모듈이라고 말할 수 있으며 객체지향 설계의 숙련도를 측정할 수 있는 단위이다.
Crystall ball 의 문제는 LSP 와 연결되어 있다고 생각한다.
특정 역할을 수행하는 Abstraction
이 함부로 구체화된 내용을 포함하고 있지 않아야 한다와 비슷한 것 같다.
현 시대의 소프트웨어는 최종 배포가 코앞에 있어도 유연하게 변경될 수 있는 설계를 요구한다. 앞서 말했듯이 Unknwon Unknowns
상황이 항상 존재하기 때문에 유연한 변경을 수용할 수 있는 Agile design 을 해야 한다.