OCP(Open-Close Principle)이란?

2023. 2. 20. 16:41Spring

기존의 코드를 변형하지 않으면서 기능을 추가할 수 있도록 설계가 되어야한다.

 

오늘 Spring프로젝트의 개발을 끝마치고, 다듬는 과정을 거치면서 하나의 문제에 직면하게 되었다.

오늘 주제와 연관된 내용인데, 최초 이 프로젝트를 작성한 분(업체)가 Popup에 관련된

모든 함수의 끝을 return; 으로  마무리지어버렸다.

 

이게 왜 문제가 되느냐

 

switch-case if문으로 뒤덥힌 코드 사이에서 우리가 예외를 처리해야할 부분을 발견했고, 

그 부분을 트리거 삼아 새로운 로직을 작성하려해도 switch-case에서 처리한 부분만 작동되지

return; 때문에 모두 undefined을 리턴하게 되었다. 최대한 switch-case문이 포함된 파일(공통 사용파일)을 건들지 않고

분기처리를 해보려 수많은 대체 트리거를 탐색했지만.. 결국 찾을 수 없었고, 공통파일에 리턴값을 추가하여 

프로그램을 완성하였다(매우 찝찝하다.)

 

그래서 다시 OCP에 대해서 고민을 하기 시작했다(100퍼센트 완벽할수는 없지만 미래를 조금만 더 생각해주쇼...선배님들)

 

OCP는 모든 소프트웨어 구성요소는 확장에 대해서는 개방되어있어야 하지만 변경에 대해서는 폐쇄되어있어야한다는 의미다.

기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다는것으로

객체지향 5대 원칙 SOLID중 O를 담당하고 있다.

 

새로운 기능을 추가할때 기존의코드를 건들지 않고 확장할 수 있어야한다는것이다. 

 

https://dublin-java.tistory.com/48

'Spring' 카테고리의 다른 글

RestTemplate  (0) 2023.05.22
MyBatis(SqlSession) - 프로시저 실행시 -1을 리턴하는 이유는?  (0) 2023.02.23
Service와 ServiceImpl을 따로 두는 이유는 뭘까?  (0) 2023.02.20
Maven VS Gradle  (0) 2023.02.01
JDBC vs JPA vs Mybatis  (1) 2023.01.27