Skip to content

8장 OCP:개방 폐쇄 원칙

anohk edited this page Feb 2, 2022 · 4 revisions

자유롭게 작성 해 주세요.

재영

OCP

  • 소프트웨어 개체의 행위는 확장할 수 있어야 하지만, 이때 개체를 변경해서는 안된다.

    • 행위가 확장되어 추가적인 변경이 생길때(개방), 저수준의 컴포넌트들이 고수준의 것을 변경되도록 하면 안된다.(폐쇄)
  • 시스템을 확장하기 쉽게하고 동시에 변경으로 너무 많은 영향을 받지 않도록 하는 목적

  • DRF 의 Permission 체크 형태는 OCP 원칙은 잘 챙긴 예시가 될 수 있지 않을까?

    • 인터페이스를 구현해서 커스텀 Permission을 생성(저수준)해서 뷰에 사용할 것임을 명시하면, 뷰(고수준)에 영향 없이 변경을 발생시킬 수 있음
class BasePermission:
    def check_permission():
        pass

class ConcreatePermission:
    def check_permission():
        return do_sth()
						

class APIView:
    permission_classes = [ConcreatePermission, ...]
안영

지급현황 사례

8퍼센트 지급현황 페이지에서 제공하는 일별 지급 합계 정보는 하나의 API에서 데이터 취합, 가공 모두 처리하고 있었음.
지급 정보를 엑셀 파일로 추출하는 기능을 추가해야하는 상황이 발생.
OCP를 위반하는 구조.

일별 합계 데이터를 책임지는 로직을 api 모듈에서 분리하고, 엑셀 추출 기능을 추가.
추후 일별 합계 데이터를 이용한 추가적인 기능이 필요한 경우, 데이터를 책임지는 코드를 수정하거나 반복할 필요가 없어짐.

  • 고민
    OCP 적용의 경계는 어디까지일까?