[C#] SOLID 원칙 (2 : O/OCP)

Learning 

When: 1학년 8월 6일

 

How:

예전에 SOLID 원칙을 배운 적이 있기는 하지만 응용을 해보지 않았기 때문에 기억도 나지 않고, 배울 때도 제대로 알았던 것이 아니었기 때문에 공부하게 되었습니다.

 

Understanding:

O : 개방/폐쇄 원칙 (Open/Closed Principle, OCP)

  • 정의 : 개방/폐쇄 원칙은 코드가 확장에는 열려 있고 수정에는 닫혀 있어야 한다는 원칙입니다. 먼저 수정과 확장의 차이점은 코드를 직접 만지면 수정이고 외부에서 코드를 만들면 자동으로 원래 코드에서 기능이 추가되는 것이 확장입니다. 상황을 예시로 다시 한번 설명해 드리겠습니다.
  • 상황 : 플레이어가 공격을 받았을 때에 대한 코드를 만들 때, '특정 공격을 받으면 이 클래스에서 정의한 특정 효과를 입힌다' 이렇게 코드를 짜면 받을 공격의 가짓수가 적을 때는 편할 순 있겠지만 독 공격, 출혈 공격, 디버프 공격 등을 따로 만든다고 하면 계속 공격을 받는 코드를 수정해야 할 것입니다. 즉 '공격을 받는다'라는 메서드만 만든 다음 효과나 데미지, 이펙트 같은 공격마다 다른 것들은 공격 안에서 정의를 해야 한다는 뜻입니다. 수정하는 것이 뭐가 문제냐고 하실 수도 있는데, 코드를 많이 짜보셨으면 잘 작동하던 코드가 조금 수정했더니 버그가 걸리는 경험을 해보셨을 것입니다. 그리고 혼자가 아닌 여러 명이 작업할 때 여러 사람이 하나의 스크립트를 만지게 되면 상상도 하기 싫은 끔찍한 일이 일어날 것이고 이와 같은 이유 때문에 OCP 원칙을 생각하지 않는다면 사용한 코드에 비해 확장성과 유지 보수성이 엄청나게 줄어들을 것입니다.

Result: OCP 원칙에 따른 코딩은 직감적으로 해오고 있긴 했지만 적용하지 못한 코드도 만들었기 때문에 이후에는 조금 더 신경써서 코드를 짜야할 것 같습니다.