개방-폐쇄 원칙 (Open - Closed Principle)

dogit·2021년 7월 10일
0

CS knowledge

목록 보기
2/8
post-thumbnail

"확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다."를 의미한다.
조금 더 쉽게 풀어 쓰자면 "기능을 변경하거나 확장할 수 있으면서 그 기능을 사용하는 코드는 수정하지 않는다."를 뜻한다.

결국 "변경이나 확장을 하지만 코드는 수정하지 않는다" 라는 조건을 만족하기 위해서는 변화하는 부분을 추상화 하는 것이다.
주로 인터페이스나 상속을 통해서 이를 구현하는데 변경해야 하는 부분을 부모의 클래스를 ㄱ너들이지 않고 자식 클래스를 생성하여 오버라이딩을 통해 변경이나 확장을 가능하게 만든다. 물론 기존의 코드는 수정되지 않고 자식 클래스가 생성되었을 뿐이다.

OCP의 장점

예를 들어 메이플스토리라는 게임이 있다고 치자 이 게임에 슬라임이라는 몬스터를 추가하라는 요청이 들어왔다.
기존의 개발자가 추상화시키는 개발 구조를 사용하지 않았다면 이 슬라임 몬스터를 추가하기 위해서 슬라임 클래스를 만들어내고 슬라임의 동작에 맞는 메소드를 다시 코딩해야 할 뿐만 아니라 이 슬라임 몬스터를 생성하고 동작시키는 클래스들도 다시 수정해야할 가능성이 높다.
이러한 구조는 확장성을 가진 개발방식이라 보기 어렵다. 이를 방지하는 것이 상속을 통한 오버라이딩 구조라고 할 수 있다.

정리

개방 폐쇄 원칙은 유연함에 관련된 원칙이다.
변화하는 부분을 추상화 함으로 기존 코드를 수정하지 않고도 확장을 할 수 있게 만들어 준다.
개발을 하면서 코드에 대한 변화 요구가 발생하면, 변화와 관련된 구현을 추상화 해서
개방 폐쇄 원칙에 맞게 수정할 수 있는지 확인해 보는 습관을 길러야 한다.

profile
느리더라도 꾸준하게

0개의 댓글