새로운 질서 위키

단일 책임 원칙

단일 책임 원칙(Single Responsibility Principle, SRP)은 같은 이유로 바뀌는 부분을 모으고 다른 이유로 바뀌는 부분을 분리하자는 소프트웨어 설계 원칙이다. 로버트 C. 마틴(Robert C. Martin)은 변경 이유를 사람과 조직이 요구하는 업무의 관점에서 설명한다. 함수가 몇 줄인지 세는 것만으로는 책임의 경계를 정할 수 없다. (마틴, 단일 책임 원칙)

무엇 때문에 바뀌는가

  • 예를 들어 전시 도록의 작품 정보를 저장하는 부분과 인쇄용 페이지를 만드는 부분을 나누어 생각할 수 있다. 작품 설명의 수정과 판형의 변경은 서로 다른 이유로 생긴다.
  • DRY를 적용해 비슷한 코드를 합치기 전에도 변경 이유를 비교하자. 지금 모양이 같아도 나중에 서로 다른 규칙을 따라야 한다면 공유하는 코드가 수정 범위를 넓힐 수 있다.
  • 관심사의 분리와 함께 함께 바뀌는 것들의 경계를 그려보자. 경계를 나누는 데도 연결과 관리 비용이 들므로, 실제로 발생하는 변경을 기준으로 판단할 필요가 있다.

기타 등등

  • 마틴의 예제에는 급여 계산, 근무 시간 보고, 데이터 저장이 한 직원 클래스에 들어 있다. 모두 같은 직원을 다뤄도 변경을 요구하는 조직은 서로 다르다. 출처
  • 같은 글은 자동차 창문을 고친 뒤 시동이 걸리지 않는 상황을 비유로 든다. 한 부분의 수리가 관계없는 기능을 망가뜨릴 때 사용자가 겪는 문제를 설명한다. 출처

#원칙 #프로그래밍 #설계

검색