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

SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design Principles
Samuel Breed
 

Tendances (20)

Learning solid principles using c#
Learning solid principles using c#Learning solid principles using c#
Learning solid principles using c#
 
SOLID Principles
SOLID PrinciplesSOLID Principles
SOLID Principles
 
Solid Principles
Solid PrinciplesSolid Principles
Solid Principles
 
Solid design principles
Solid design principlesSolid design principles
Solid design principles
 
Solid principles
Solid principlesSolid principles
Solid principles
 
Solid Principles
Solid PrinciplesSolid Principles
Solid Principles
 
Solid principles
Solid principlesSolid principles
Solid principles
 
SOLID principles
SOLID principlesSOLID principles
SOLID principles
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility Principle
 
SOLID Principles and Design Patterns
SOLID Principles and Design PatternsSOLID Principles and Design Patterns
SOLID Principles and Design Patterns
 
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
 
SOLID PRINCIPLES
SOLID PRINCIPLESSOLID PRINCIPLES
SOLID PRINCIPLES
 
Abstraction java
Abstraction javaAbstraction java
Abstraction java
 
The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility Principle
 
Solid Principles
Solid PrinciplesSolid Principles
Solid Principles
 
Basic Java Programming
Basic Java ProgrammingBasic Java Programming
Basic Java Programming
 
Java Interview Questions and Answers | Spring and Hibernate Interview Questio...
Java Interview Questions and Answers | Spring and Hibernate Interview Questio...Java Interview Questions and Answers | Spring and Hibernate Interview Questio...
Java Interview Questions and Answers | Spring and Hibernate Interview Questio...
 
SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design 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 of oo design
Solid principles of oo designSolid principles of oo design
Solid principles of oo design
 
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
 
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
 
Java Inheritance
Java InheritanceJava Inheritance
Java Inheritance
 

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

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Dernier (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

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