User Tools

Site Tools


principles:single_responsibility_principle

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
principles:single_responsibility_principle [2013-01-15 17:17] – tidied up christianprinciples:single_responsibility_principle [2021-10-18 22:01] (current) – +++ restored +++ christian
Line 5: Line 5:
   * One Responsibility Rule   * One Responsibility Rule
   * Separation of Concerns (this originally was a broader term but is mostly used just like SRP)   * Separation of Concerns (this originally was a broader term but is mostly used just like SRP)
 +  * Curly's Law
 +  * Do One Thing
  
  
 ===== Context ===== ===== Context =====
 /* fill in contexts here: */ /* fill in contexts here: */
-  * [[contexts:Object-Oriented Design]]  +  * [[contexts:Object-Oriented Design]] 
 +  * [[contexts:API Design]] 
 +  * [[contexts:Architecture]] 
 +  * [[contexts:User Interface Design]]
  
 ===== Principle Statement ===== ===== Principle Statement =====
  
-There should never be more than one reason for a [[glossary:module]] to change.((compare [[http://www.objectmentor.com/resources/articles/srp.pdf|Robert C. Martin: Single Responsibility Principle]]))+There should never be more than one reason to change certain [[glossary:module]].((compare [[http://www.objectmentor.com/resources/articles/srp.pdf|Robert C. Martin: Single Responsibility Principle]]))
  
  
Line 30: Line 34:
  
 ===== Strategies ===== ===== Strategies =====
 +
 +
 +===== Caveats =====
 +
 +See section [[#contrary principles]].
  
  
 ===== Origin ===== ===== Origin =====
 /* the *primary* source */ /* the *primary* source */
 +{{page>resources:Agile Software Development, Principles, Patterns, and Practices#reference}}
  
 ===== Evidence ===== ===== Evidence =====
Line 50: Line 59:
 ==== Generalizations ==== ==== Generalizations ====
  
-  * [[principles:High Cohesion]] +  * [[High Cohesion]] (HC) 
 +  * [[Encapsulate the Concept that Varies]] (ECV)
 ==== Specializations ==== ==== Specializations ====
  
Line 62: Line 71:
  
 {{page>collections:SOLID#Box}} {{page>collections:SOLID#Box}}
-===== Example =====+===== Examples =====
  
  
 ===== Description Status ===== ===== Description Status =====
 /* Choose one of the following and comment out the rest: */ /* Choose one of the following and comment out the rest: */
-[[wiki:Stub]] +/*[[wiki:Stub]]*
-/*[[wiki:Incomplete]]*/+[[wiki:Incomplete]]
 /*[[wiki:Complete]]*/ /*[[wiki:Complete]]*/
  
 ===== Further Reading ===== ===== Further Reading =====
  
-  * Robert C. Martin//Agile Software Development, Principles, Patterns, and Practices//+  * {{page>resources:Agile Software Development, Principles, Patterns, and Practices#reference}}
   * [[http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod|ButUncleBob: Principles of OOD]]   * [[http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod|ButUncleBob: Principles of OOD]]
   * [[wiki>SingleResponsibilityPrinciple]]   * [[wiki>SingleResponsibilityPrinciple]]
Line 80: Line 89:
   * [[wp>Separation of Concerns]]   * [[wp>Separation of Concerns]]
   * [[http://blog.8thlight.com/cory-foy/2012/08/07/thinking-differently-about-srp.html|Thinking Differently About the Single Responsibility Principle]]   * [[http://blog.8thlight.com/cory-foy/2012/08/07/thinking-differently-about-srp.html|Thinking Differently About the Single Responsibility Principle]]
 +  * Coding Horror: [[http://blog.codinghorror.com/curlys-law-do-one-thing/|Curly's Law: Do One Thing]]
 +
 +===== Discussion =====
 +
 +Discuss this wiki article and the principle on the corresponding [[talk:principles:Single Responsibility Principle|talk page]].
  
principles/single_responsibility_principle.1358266670.txt.gz · Last modified: 2013-05-20 12:45 (external edit)