단일책임원칙

Single-responsibility principle

단일 책임 원칙(SRP)컴퓨터 프로그램의 모든 모듈, 클래스 또는 기능이 그 프로그램의 기능성의 단일 부분에 대해 책임을 져야 하며, 그 부분을 캡슐화해야 한다는 컴퓨터 프로그래밍 원칙이다.모든 모듈, 클래스 또는 기능의 서비스는 그 책임과 좁게 일치해야 한다.[1]

로버트 C. '이성'이라는 단어를 둘러싼 혼란 때문에 "이 원칙은 사람에 관한 것"이라고 말하기도 했지만, 이 용어의 유래자인 마틴은 "계급은 변화해야 할 한 가지 이유만을 가져야 한다"[1]고 원칙을 표현한다.[2]일부 대담에서 그는 특히 원칙이 역할이나 배우에 관한 것이라고 주장하기도 한다.예를 들어, 그들이 같은 사람일 수도 있지만, 회계사의 역할은 데이터베이스 관리자와 다르다.따라서 각 모듈은 각 역할을 책임져야 한다.[3]

역사

그 용어는 로버트 C에 의해 도입되었다. 마틴은 2003년 저서 '신속한 소프트웨어 개발, 원칙, 패턴 관행'에서 인기를 끌었던 객체 지향 설계 원칙의 일부로 "OOD의 원리" 기사에서 이같이 밝혔다.[4][5]마틴은 톰 드마르코가 자신의 저서 체계적 분석과 시스템 사양에서 설명한 바와 같이 응집력의 원리에 기초하고 있으며,[6] 구조화된 시스템 설계에 대한 실무 가이드에서 메일리르 페이지 존스가 기술한 바와 같이, 그것을 체계화된 시스템 설계에 대한 실용적 가이드에서 설명하고 있다고 설명했다.[7]2014년 마틴은 "변화의 이유"라는 문구가 무엇을 의미하는지 명확히 하기 위해 "단일 책임 원칙"이라는 제목의 블로그 글을 썼다.

마틴은 책임을 변경의 이유로 정의하고, 클래스나 모듈이 변경되어야 할 이유를 하나만 가져야 한다고 결론짓는다(예: 다시 작성).

예를 들어 리포트를 컴파일하고 인쇄하는 모듈을 고려해 보십시오.이러한 모듈이 두 가지 이유로 변경될 수 있다고 상상해 보십시오.첫째, 보고서의 내용이 바뀔 수 있다.둘째, 보고서의 형식이 바뀔 수 있다.이 두 가지는 다른 원인에 따라 변한다.단일 책임 원칙은 문제의 이 두 측면은 실제로 두 개의 별도 책임이며, 따라서 별도의 등급이나 모듈에 있어야 한다고 말한다.서로 다른 시간에 다른 이유로 바뀌는 두 가지를 결합하는 것은 좋지 않은 디자인이 될 것이다.

수업을 하나의 관심사에 집중하는 것이 중요한 이유는 수업을 더욱 강건하게 만들기 때문이다.앞의 예를 계속하여, 보고서 작성 과정에 변경이 있을 경우, 같은 등급의 일부일 경우 인쇄 코드가 깨질 위험이 더 크다.

참고 항목

참조

  1. ^ a b Martin, Robert C. (2003). Agile Software Development, Principles, Patterns, and Practices. Prentice Hall. p. 95. ISBN 978-0135974445.
  2. ^ Martin, Robert C. (2014). "The Single Responsibility Principle". The Clean Code Blog.{{cite web}}: CS1 maint : url-status (링크)
  3. ^ Robert C. Martin (2018). Clean Architecture: A Craftsman's Guide to Software Structure and Design. Prentice Hall. ISBN 978-0-13-449416-6.
  4. ^ Martin, Robert C. (2005). "The Principles of OOD". butunclebob.com.{{cite web}}: CS1 maint : url-status (링크)
  5. ^ 마틴 2003, 페이지 95-98
  6. ^ DeMarco, Tom. (1979). Structured Analysis and System Specification. Prentice Hall. ISBN 0-13-854380-1.
  7. ^ Page-Jones, Meilir (1988). The Practical Guide to Structured Systems Design. Yourdon Press Computing Series. p. 82. ISBN 978-8120314825.

외부 링크