SlideShare une entreprise Scribd logo
1  sur  28
SOLID Principles  for Software Architects aka No More Spaghetti Code
Ricardo Wilkins    SharePoint Solutions Architect ,[object Object]
Web Dev (ASP, PHP)
Application Lifecycle Management (TFS)
Technical Training
Blog: rixbits.blogspot.com
          : @ricardo303,[object Object]
S ingle Responsibility Principle O pen / Close Principle L iskov Substitution Principle I nterface Segregation Principle D ependency Inversion Principle
avoid Code Rot
How can we tell when our code is rotting?
Rigidity Design is hard to change
Fragility Design is easy to break
Immobility Design is hard to reuse
Viscosity Design 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 them Clarity - Your code is cleaner as your classes don’t do unexpected things Naming - As all your classes have a single responsibility, choosing a good name is easy Readability - Due to the clarity, better names and shorter files the readability is improved greatly.
SIDEBAR Workflows: 1 per content type Vs 1 workflow to rule them all
A module should be opentoextensibility,butclosedfor modification.
Example

Contenu connexe

Tendances

Clean Code II - Dependency Injection
Clean Code II - Dependency InjectionClean Code II - Dependency Injection
Clean Code II - Dependency Injection
Theo Jungeblut
 

Tendances (20)

Solid principles
Solid principlesSolid principles
Solid principles
 
Clean code: SOLID
Clean code: SOLIDClean code: SOLID
Clean code: SOLID
 
SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design Principles
 
Solid Principle
Solid PrincipleSolid Principle
Solid Principle
 
SOLID Design Principles applied in Java
SOLID Design Principles applied in JavaSOLID Design Principles applied in Java
SOLID Design Principles applied in Java
 
SOLID
SOLIDSOLID
SOLID
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility Principle
 
principles of object oriented class design
principles of object oriented class designprinciples of object oriented class design
principles of object oriented class design
 
Dependency injection presentation
Dependency injection presentationDependency injection presentation
Dependency injection presentation
 
Solid design principles
Solid design principlesSolid design principles
Solid design principles
 
Introduction to SOLID Principles
Introduction to SOLID PrinciplesIntroduction to SOLID Principles
Introduction to SOLID Principles
 
SOLID Principles
SOLID PrinciplesSOLID Principles
SOLID Principles
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Clean Code II - Dependency Injection
Clean Code II - Dependency InjectionClean Code II - Dependency Injection
Clean Code II - Dependency Injection
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
Solid principles of oo design
Solid principles of oo designSolid principles of oo design
Solid principles of oo design
 
Open Closed Principle kata
Open Closed Principle kataOpen Closed Principle kata
Open Closed Principle kata
 
Decorator Design Pattern
Decorator Design PatternDecorator Design Pattern
Decorator Design Pattern
 
SOLID PRINCIPLES
SOLID PRINCIPLESSOLID PRINCIPLES
SOLID PRINCIPLES
 

En vedette

"SOLID" Object Oriented Design Principles
"SOLID" Object Oriented Design Principles"SOLID" Object Oriented Design Principles
"SOLID" Object Oriented Design Principles
Serhiy Oplakanets
 

En vedette (20)

"SOLID" Object Oriented Design Principles
"SOLID" Object Oriented Design Principles"SOLID" Object Oriented Design Principles
"SOLID" Object Oriented Design Principles
 
Advanced Object-Oriented/SOLID Principles
Advanced Object-Oriented/SOLID PrinciplesAdvanced Object-Oriented/SOLID Principles
Advanced Object-Oriented/SOLID Principles
 
Object Oriented Design SOLID Principles
Object Oriented Design SOLID PrinciplesObject Oriented Design SOLID Principles
Object Oriented Design SOLID Principles
 
SOLID Principles and Design Patterns
SOLID Principles and Design PatternsSOLID Principles and Design Patterns
SOLID Principles and Design Patterns
 
The SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design PatternsThe SOLID Principles Illustrated by Design Patterns
The SOLID Principles Illustrated by Design Patterns
 
SOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented DesignSOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented Design
 
Clean code
Clean codeClean code
Clean code
 
The Solid Principles
The Solid PrinciplesThe Solid Principles
The Solid Principles
 
Java inheritance
Java inheritanceJava inheritance
Java inheritance
 
Do we need SOLID principles during software development?
Do we need SOLID principles during software development?Do we need SOLID principles during software development?
Do we need SOLID principles during software development?
 
Refactoring to SOLID Code
Refactoring to SOLID CodeRefactoring to SOLID Code
Refactoring to SOLID Code
 
Clean code
Clean codeClean code
Clean code
 
Applying Design Patterns in Practice
Applying Design Patterns in PracticeApplying Design Patterns in Practice
Applying Design Patterns in Practice
 
The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility Principle
 
Geecon09: SOLID Design Principles
Geecon09: SOLID Design PrinciplesGeecon09: SOLID Design Principles
Geecon09: SOLID Design Principles
 
Refactoring Applications using SOLID Principles
Refactoring Applications using SOLID PrinciplesRefactoring Applications using SOLID Principles
Refactoring Applications using SOLID Principles
 
A Checklist for Design Reviews
A Checklist for Design ReviewsA Checklist for Design Reviews
A Checklist for Design Reviews
 
Applying Design Principles in Practice
Applying Design Principles in PracticeApplying Design Principles in Practice
Applying Design Principles in Practice
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
SOLID Principles part 2
SOLID Principles part 2SOLID Principles part 2
SOLID Principles part 2
 

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

Contemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseContemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With Enterprise
Kenan Sevindik
 
SOLID principles-Present
SOLID principles-PresentSOLID principles-Present
SOLID principles-Present
Quang Nguyen
 

Similaire à S.O.L.I.D. Principles for Software Architects (20)

Creativity vs Best Practices
Creativity vs Best PracticesCreativity vs Best Practices
Creativity vs Best Practices
 
11th Salesforce Developer Group meeting in Bilbao
11th Salesforce Developer Group meeting in Bilbao11th Salesforce Developer Group meeting in Bilbao
11th Salesforce Developer Group meeting in Bilbao
 
Solid
SolidSolid
Solid
 
Solid principes
Solid principesSolid principes
Solid principes
 
The OO Design Principles
The OO Design PrinciplesThe OO Design Principles
The OO Design Principles
 
Writing Quality Code
Writing Quality CodeWriting Quality Code
Writing Quality Code
 
Software design principles
Software design principlesSoftware design principles
Software design principles
 
Contemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseContemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With Enterprise
 
SOLID principles-Present
SOLID principles-PresentSOLID principles-Present
SOLID principles-Present
 
Agile design pattern
Agile design patternAgile design pattern
Agile design pattern
 
Design poo my_jug_en_ppt
Design poo my_jug_en_pptDesign poo my_jug_en_ppt
Design poo my_jug_en_ppt
 
DesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatternsDesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatterns
 
SOLID Principles of Refactoring Presentation - Inland Empire User Group
SOLID Principles of Refactoring Presentation - Inland Empire User GroupSOLID Principles of Refactoring Presentation - Inland Empire User Group
SOLID Principles of Refactoring Presentation - Inland Empire User Group
 
The Agile Drupalist - Methodologies & Techniques for Running Effective Drupal...
The Agile Drupalist - Methodologies & Techniques for Running Effective Drupal...The Agile Drupalist - Methodologies & Techniques for Running Effective Drupal...
The Agile Drupalist - Methodologies & Techniques for Running Effective Drupal...
 
Applying Design Principles in Practice
Applying Design Principles in PracticeApplying Design Principles in Practice
Applying Design Principles in Practice
 
Refactoring page objects The Screenplay Pattern
Refactoring page objects   The Screenplay Pattern Refactoring page objects   The Screenplay Pattern
Refactoring page objects The Screenplay Pattern
 
Object Oriented Concepts and Principles
Object Oriented Concepts and PrinciplesObject Oriented Concepts and Principles
Object Oriented Concepts and Principles
 
Clean Code .Net Cheetsheets
Clean Code .Net CheetsheetsClean Code .Net Cheetsheets
Clean Code .Net Cheetsheets
 
Intro to oop.pptx
Intro to oop.pptxIntro to oop.pptx
Intro to oop.pptx
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 

Plus de Ricardo Wilkins

Moving Your SharePoint Development to the Cloud
Moving Your SharePoint Development to the CloudMoving Your SharePoint Development to the Cloud
Moving Your SharePoint Development to the Cloud
Ricardo Wilkins
 
SharePoint 2013 Dev Features
SharePoint 2013 Dev FeaturesSharePoint 2013 Dev Features
SharePoint 2013 Dev Features
Ricardo Wilkins
 
Cloud Computing Tips for Small Business
Cloud Computing Tips for Small BusinessCloud Computing Tips for Small Business
Cloud Computing Tips for Small Business
Ricardo Wilkins
 
The ABC’s of Building Apps for SharePoint 2013
The ABC’s of Building Apps for SharePoint 2013The ABC’s of Building Apps for SharePoint 2013
The ABC’s of Building Apps for SharePoint 2013
Ricardo Wilkins
 
SharePoint & Azure Integration
SharePoint & Azure IntegrationSharePoint & Azure Integration
SharePoint & Azure Integration
Ricardo Wilkins
 

Plus de Ricardo Wilkins (20)

InfoPath - I Ain't Dead Yet!
InfoPath - I Ain't Dead Yet!InfoPath - I Ain't Dead Yet!
InfoPath - I Ain't Dead Yet!
 
Ricardo Wilkins - Modern Work CSM @ Microsoft
Ricardo Wilkins - Modern Work CSM @ MicrosoftRicardo Wilkins - Modern Work CSM @ Microsoft
Ricardo Wilkins - Modern Work CSM @ Microsoft
 
FAQ: Working with Files in Microsoft Teams
FAQ: Working with Files in Microsoft TeamsFAQ: Working with Files in Microsoft Teams
FAQ: Working with Files in Microsoft Teams
 
Top Ten Tips for Teams - Microsoft Teams
Top Ten Tips for Teams - Microsoft TeamsTop Ten Tips for Teams - Microsoft Teams
Top Ten Tips for Teams - Microsoft Teams
 
Microsoft Flow - A Real-World Walkthru
Microsoft Flow - A Real-World WalkthruMicrosoft Flow - A Real-World Walkthru
Microsoft Flow - A Real-World Walkthru
 
Columbus SharePoint User Group - April 2019
Columbus SharePoint User Group - April 2019Columbus SharePoint User Group - April 2019
Columbus SharePoint User Group - April 2019
 
OneNote - The Missing Manual
OneNote - The Missing ManualOneNote - The Missing Manual
OneNote - The Missing Manual
 
Teams - The Missing Manual
Teams - The Missing ManualTeams - The Missing Manual
Teams - The Missing Manual
 
Microsoft Teams - The Missing Manual
Microsoft Teams - The Missing ManualMicrosoft Teams - The Missing Manual
Microsoft Teams - The Missing Manual
 
SharePoint Cincy 2018 - Site Management - Notes from the Field
SharePoint Cincy 2018 - Site Management - Notes from the FieldSharePoint Cincy 2018 - Site Management - Notes from the Field
SharePoint Cincy 2018 - Site Management - Notes from the Field
 
OneNote Overview
OneNote OverviewOneNote Overview
OneNote Overview
 
SharePoint, PowerApps, Flow and Azure Functions - What Does It All Mean?
SharePoint, PowerApps, Flow and Azure Functions - What Does It All Mean?SharePoint, PowerApps, Flow and Azure Functions - What Does It All Mean?
SharePoint, PowerApps, Flow and Azure Functions - What Does It All Mean?
 
When Your CISO Says No - Security & Compliance in Office 365
When Your CISO Says No - Security & Compliance in Office 365When Your CISO Says No - Security & Compliance in Office 365
When Your CISO Says No - Security & Compliance in Office 365
 
Moving Your SharePoint Development to the Cloud
Moving Your SharePoint Development to the CloudMoving Your SharePoint Development to the Cloud
Moving Your SharePoint Development to the Cloud
 
SharePoint PowerShell for the Admin and Developer - A Venn Diagram Experience
SharePoint PowerShell for the Admin and Developer - A Venn Diagram ExperienceSharePoint PowerShell for the Admin and Developer - A Venn Diagram Experience
SharePoint PowerShell for the Admin and Developer - A Venn Diagram Experience
 
InfoPath
InfoPathInfoPath
InfoPath
 
SharePoint 2013 Dev Features
SharePoint 2013 Dev FeaturesSharePoint 2013 Dev Features
SharePoint 2013 Dev Features
 
Cloud Computing Tips for Small Business
Cloud Computing Tips for Small BusinessCloud Computing Tips for Small Business
Cloud Computing Tips for Small Business
 
The ABC’s of Building Apps for SharePoint 2013
The ABC’s of Building Apps for SharePoint 2013The ABC’s of Building Apps for SharePoint 2013
The ABC’s of Building Apps for SharePoint 2013
 
SharePoint & Azure Integration
SharePoint & Azure IntegrationSharePoint & Azure Integration
SharePoint & Azure Integration
 

Dernier

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Dernier (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

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