SOLID Principles for Software Architectsaka No More Spaghetti Code
Ricardo Wilkins    SharePoint Solutions ArchitectApp Dev (.NET; embedded)
Web Dev (ASP, PHP)
Application Lifecycle Management (TFS)
Technical Training
Blog: rixbits.blogspot.com
          : @ricardo303Single Responsibility PrincipleOpen / Close PrincipleLiskov Substitution PrincipleInterface Segregation PrincipleDependency Inversion Principle
Single Responsibility PrincipleOpen / Close PrincipleLiskov Substitution PrincipleInterface Segregation PrincipleDependency Inversion Principle
avoid Code Rot
How can we tell when our code is rotting?
RigidityDesign is hard to change
FragilityDesign is easy to break
ImmobilityDesign is hard to reuse
ViscosityDesign makes it hard to do the right thing
Definition“Every object should have a single responsibility, and that responsibility should be entirely encapsulated by the class.”“Classes should have one responsibility  - one reason to change.”
Example
Arguments against SRP?
Argument Against SRP“Too many classes and too difficult to understand the BIG PICTURE.” There are no more moving parts in a system with many small pieces than that with a few large pieces.  The benefits outweigh this argument.  Consistency, good names, and documentation make this a mute point.
What are some of the benefits?Reuse - If all your classes follow the srp, you are more likely to reuse some of themClarity - Your code is cleaner as your classes don’t do unexpected thingsNaming - As all your classes have a single responsibility, choosing a good name is easyReadability - Due to the clarity, better names and shorter files the readability is improved greatly.
SIDEBARWorkflows:1 per content typeVs1 workflow to rule them all
A module should be opentoextensibility,butclosedfor modification.
Example

S.O.L.I.D. Principles for Software Architects