[C#] SOLID 원칙 (1 : S/SRP)

Learning 

When: 1학년 8월 5일

 

How:

동아리 시간에 솔리드 원칙에 대해 배웠었는데 이해가 안 되었던 부분도 많았고, 이번 게임잼을 하다 보니 코드를 빠르게 구동시키는 것도 중요하지만 코드를 보기 쉽고 유연하게, 즉 잘 짜는 것도 중요하다는 것을 뼈저리게 느꼈기 때문에 SOLID 원칙을 다시 한번 공부하게 되었습니다.

 

Understanding:

S : 단일 책임 원칙 (Single Responsibility Principle/SRP)

  • 정의 : 단일 책임 원칙은 클래스가 하나의 책임만 가져야 한다는 뜻입니다. 이것을 쉽게 풀어서 설명하면 클래스를 수정할 때마다 그 이유가 하나여야 한다는 것 입니다. 이것은 클래스 하나의 역할이 하나여야 한다는 것으로도 바꿔 말할 수 있습니다.
  • 상황 : 만약 이동 횟수에 제한이 있는 게임을 만든다고 했을 때, 플레이어가 이동하는 로직과 횟수가 줄어드는 로직을 한 클래스 내에 둘 다 넣는다면 만들 때는 편할 것입니다. 하지만 이렇게 코드를 짜면 나중에 문제가 생길 수 있는데 크게 3가지 문제 상황을 예로 들어보겠습니다.
    1. 일단 기능 2개를 하나의 클래스에 넣다보니 코드가 길어지고, 메서드, 변수가 이동 기능에 쓰이는 것인지 횟수 기능에 쓰이는 것인지를 한눈에 알기 어렵게 됩니다. 즉 가독성이 떨어집니다.
    2. 두 로직이 같이 있다면 로직 하나를 바꿨을 때 다른 실수로 혹은 코드 상의 문제로 인해 버그가 생길 수 있습니다. 로직이 분리되어 있다면 수정했을 때 다른 코드에 영향을 줄 가능성이 적어집니다. 즉 유지 보수성이 떨어집니다.
    3. 만약 이동하는 오브젝트가 게임 내에 있는데, 그 오브젝트는 이동 횟수가 정해져 있지 않다면 또 새로운 스크립트를 만들어야 할 것입니다. 즉 재사용성이 감소합니다.

 

Result: 단일 책임 원칙은 결국 "계란을 한 바구니에 담지 말라"는 교훈과 비슷합니다. 할 때는 편해도 나중에 읽고 관리할 때 커다란 후폭풍이 찾아올 수 있으니 SRP를 염두에 두고 코드를 짜는 것이 좋을 것 같습니다.