클린 코더스 강의 14.1. OCP(Open-Closed Principle)

https://www.youtube.com/watch?v=dqa-IdafeIE&list=PL7pUrjEGbG8ZMPQ-XukPJsFyMeyvtGcnV&index=16

정의: 타에는 열려있고 변경에는 닫혀있다.

OCP 위반 예제

새로운 타입의 readConsole 이 추가된다면 copy 함수는 변경을 요구하게 된다.

OCP 로 해결방법

즉, 새로운 변경이 일어나 Copy 함수는 변경되지 않는다.

OCP 를 사용할 경우 의존성의 방향

main partition: main 함수에는 if else 가 존재하게 된다. Crystal ball: 우리는 미래를 예측할 수 없다.

나의 생각

OCPLSP는 밀접하게 연관되어 있다. OCP 원칙이 어긋났다는 것은 LSP 원칙을 선행해서 어긋나고 있는 것이다.

OCP 의 문제 중 Main partition 은 생성 - 사용 관계에서 모듈안에서의 if ~ else 를 제거하기 위하여 main 함수로 밀어내는 과정이다. Main 함수까지 if ~ else 를 밀어내면 유연한 변화를 가진 모듈이라고 말할 수 있으며 객체지향 설계의 숙련도를 측정할 수 있는 단위이다.

Crystall ball 의 문제는 LSP 와 연결되어 있다고 생각한다. 특정 역할을 수행하는 Abstraction 이 함부로 구체화된 내용을 포함하고 있지 않아야 한다와 비슷한 것 같다.

현 시대의 소프트웨어는 최종 배포가 코앞에 있어도 유연하게 변경될 수 있는 설계를 요구한다. 앞서 말했듯이 Unknwon Unknowns 상황이 항상 존재하기 때문에 유연한 변경을 수용할 수 있는 Agile design 을 해야 한다.

Last updated

Was this helpful?