2023. 2. 20. 16:41ㆍSpring
기존의 코드를 변형하지 않으면서 기능을 추가할 수 있도록 설계가 되어야한다.
오늘 Spring프로젝트의 개발을 끝마치고, 다듬는 과정을 거치면서 하나의 문제에 직면하게 되었다.
오늘 주제와 연관된 내용인데, 최초 이 프로젝트를 작성한 분(업체)가 Popup에 관련된
모든 함수의 끝을 return; 으로 마무리지어버렸다.
이게 왜 문제가 되느냐
switch-case if문으로 뒤덥힌 코드 사이에서 우리가 예외를 처리해야할 부분을 발견했고,
그 부분을 트리거 삼아 새로운 로직을 작성하려해도 switch-case에서 처리한 부분만 작동되지
return; 때문에 모두 undefined을 리턴하게 되었다. 최대한 switch-case문이 포함된 파일(공통 사용파일)을 건들지 않고
분기처리를 해보려 수많은 대체 트리거를 탐색했지만.. 결국 찾을 수 없었고, 공통파일에 리턴값을 추가하여
프로그램을 완성하였다(매우 찝찝하다.)
그래서 다시 OCP에 대해서 고민을 하기 시작했다(100퍼센트 완벽할수는 없지만 미래를 조금만 더 생각해주쇼...선배님들)
OCP는 모든 소프트웨어 구성요소는 확장에 대해서는 개방되어있어야 하지만 변경에 대해서는 폐쇄되어있어야한다는 의미다.
기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다는것으로
객체지향 5대 원칙 SOLID중 O를 담당하고 있다.
새로운 기능을 추가할때 기존의코드를 건들지 않고 확장할 수 있어야한다는것이다.
'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 |