Submit Search
Upload
Solid principles
•
0 likes
•
80 views
G
GibDevs
Follow
Solid principles presentation on GibDevs meetup by Vytautas Dagilis on 22/08/2019
Read less
Read more
Software
Report
Share
Report
Share
1 of 27
Download now
Download to read offline
Recommended
.NET Coding Standards For The Real World (2012)
.NET Coding Standards For The Real World (2012)
David McCarter
Midiendo la calidad de código en WTF/Min (Revisado EUI Abril 2014)
Midiendo la calidad de código en WTF/Min (Revisado EUI Abril 2014)
David Gómez García
Working with c++ legacy code
Working with c++ legacy code
Dror Helper
Legacy Code Kata v3.0
Legacy Code Kata v3.0
William Munn
How to write clean & testable code without losing your mind
How to write clean & testable code without losing your mind
Andreas Czakaj
Studying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software Quality
Nicolas Bettenburg
MegaScriptSample - Released x-x-15
MegaScriptSample - Released x-x-15
Bob Powers
Icpc2010 bettenburg
Icpc2010 bettenburg
SAIL_QU
Recommended
.NET Coding Standards For The Real World (2012)
.NET Coding Standards For The Real World (2012)
David McCarter
Midiendo la calidad de código en WTF/Min (Revisado EUI Abril 2014)
Midiendo la calidad de código en WTF/Min (Revisado EUI Abril 2014)
David Gómez García
Working with c++ legacy code
Working with c++ legacy code
Dror Helper
Legacy Code Kata v3.0
Legacy Code Kata v3.0
William Munn
How to write clean & testable code without losing your mind
How to write clean & testable code without losing your mind
Andreas Czakaj
Studying the impact of Social Structures on Software Quality
Studying the impact of Social Structures on Software Quality
Nicolas Bettenburg
MegaScriptSample - Released x-x-15
MegaScriptSample - Released x-x-15
Bob Powers
Icpc2010 bettenburg
Icpc2010 bettenburg
SAIL_QU
Real world Webapp
Real world Webapp
Things Lab
IndexedDB and Push Notifications in Progressive Web Apps
IndexedDB and Push Notifications in Progressive Web Apps
Adégòkè Obasá
A Practitioner’s guide to Hardened JavaScript
A Practitioner’s guide to Hardened JavaScript
Tom Van Cutsem
Production Debugging at Code Camp Philly
Production Debugging at Code Camp Philly
Brian Lyttle
07.3. Android Alert message, List, Dropdown, and Auto Complete
07.3. Android Alert message, List, Dropdown, and Auto Complete
Oum Saokosal
How We Analyzed 1000 Dumps in One Day - Dina Goldshtein, Brightsource - DevOp...
How We Analyzed 1000 Dumps in One Day - Dina Goldshtein, Brightsource - DevOp...
DevOpsDays Tel Aviv
Unit Testing Android Applications
Unit Testing Android Applications
Rody Middelkoop
Extending the build workflow of TFS 2010
Extending the build workflow of TFS 2010
Gian Maria Ricci
Advanced iOS Debbuging (Reloaded)
Advanced iOS Debbuging (Reloaded)
Massimo Oliviero
10 Typical Enterprise Java Problems
10 Typical Enterprise Java Problems
Eberhard Wolff
JVM Mechanics: A Peek Under the Hood
JVM Mechanics: A Peek Under the Hood
Azul Systems Inc.
Powerful persistence layer with Google Guice & MyBatis
Powerful persistence layer with Google Guice & MyBatis
simonetripodi
How my team is applying JS framework for PHP projects.
How my team is applying JS framework for PHP projects.
Damon Hung Tran
Clean code
Clean code
Khou Suylong
GraniteDS 360|Flex DC
GraniteDS 360|Flex DC
wdrai
Legacy Dependency Kata v2.0
Legacy Dependency Kata v2.0
William Munn
What the Struts?
What the Struts?
Joe Kutner
少し幸せになる技術
少し幸せになる技術
kamedon39
Clean Code II - Dependency Injection at SoCal Code Camp San Diego (07/27/2013)
Clean Code II - Dependency Injection at SoCal Code Camp San Diego (07/27/2013)
Theo Jungeblut
Creating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTP
nsandonato
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
VictorSzoltysek
Software Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
Arshad QA
More Related Content
Similar to Solid principles
Real world Webapp
Real world Webapp
Things Lab
IndexedDB and Push Notifications in Progressive Web Apps
IndexedDB and Push Notifications in Progressive Web Apps
Adégòkè Obasá
A Practitioner’s guide to Hardened JavaScript
A Practitioner’s guide to Hardened JavaScript
Tom Van Cutsem
Production Debugging at Code Camp Philly
Production Debugging at Code Camp Philly
Brian Lyttle
07.3. Android Alert message, List, Dropdown, and Auto Complete
07.3. Android Alert message, List, Dropdown, and Auto Complete
Oum Saokosal
How We Analyzed 1000 Dumps in One Day - Dina Goldshtein, Brightsource - DevOp...
How We Analyzed 1000 Dumps in One Day - Dina Goldshtein, Brightsource - DevOp...
DevOpsDays Tel Aviv
Unit Testing Android Applications
Unit Testing Android Applications
Rody Middelkoop
Extending the build workflow of TFS 2010
Extending the build workflow of TFS 2010
Gian Maria Ricci
Advanced iOS Debbuging (Reloaded)
Advanced iOS Debbuging (Reloaded)
Massimo Oliviero
10 Typical Enterprise Java Problems
10 Typical Enterprise Java Problems
Eberhard Wolff
JVM Mechanics: A Peek Under the Hood
JVM Mechanics: A Peek Under the Hood
Azul Systems Inc.
Powerful persistence layer with Google Guice & MyBatis
Powerful persistence layer with Google Guice & MyBatis
simonetripodi
How my team is applying JS framework for PHP projects.
How my team is applying JS framework for PHP projects.
Damon Hung Tran
Clean code
Clean code
Khou Suylong
GraniteDS 360|Flex DC
GraniteDS 360|Flex DC
wdrai
Legacy Dependency Kata v2.0
Legacy Dependency Kata v2.0
William Munn
What the Struts?
What the Struts?
Joe Kutner
少し幸せになる技術
少し幸せになる技術
kamedon39
Clean Code II - Dependency Injection at SoCal Code Camp San Diego (07/27/2013)
Clean Code II - Dependency Injection at SoCal Code Camp San Diego (07/27/2013)
Theo Jungeblut
Creating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTP
nsandonato
Similar to Solid principles
(20)
Real world Webapp
Real world Webapp
IndexedDB and Push Notifications in Progressive Web Apps
IndexedDB and Push Notifications in Progressive Web Apps
A Practitioner’s guide to Hardened JavaScript
A Practitioner’s guide to Hardened JavaScript
Production Debugging at Code Camp Philly
Production Debugging at Code Camp Philly
07.3. Android Alert message, List, Dropdown, and Auto Complete
07.3. Android Alert message, List, Dropdown, and Auto Complete
How We Analyzed 1000 Dumps in One Day - Dina Goldshtein, Brightsource - DevOp...
How We Analyzed 1000 Dumps in One Day - Dina Goldshtein, Brightsource - DevOp...
Unit Testing Android Applications
Unit Testing Android Applications
Extending the build workflow of TFS 2010
Extending the build workflow of TFS 2010
Advanced iOS Debbuging (Reloaded)
Advanced iOS Debbuging (Reloaded)
10 Typical Enterprise Java Problems
10 Typical Enterprise Java Problems
JVM Mechanics: A Peek Under the Hood
JVM Mechanics: A Peek Under the Hood
Powerful persistence layer with Google Guice & MyBatis
Powerful persistence layer with Google Guice & MyBatis
How my team is applying JS framework for PHP projects.
How my team is applying JS framework for PHP projects.
Clean code
Clean code
GraniteDS 360|Flex DC
GraniteDS 360|Flex DC
Legacy Dependency Kata v2.0
Legacy Dependency Kata v2.0
What the Struts?
What the Struts?
少し幸せになる技術
少し幸せになる技術
Clean Code II - Dependency Injection at SoCal Code Camp San Diego (07/27/2013)
Clean Code II - Dependency Injection at SoCal Code Camp San Diego (07/27/2013)
Creating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTP
Recently uploaded
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
VictorSzoltysek
Software Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
Arshad QA
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
AmarnathKambale
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
Direct Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension Aid
Philip Schwarz
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
Willy Marroquin (WillyDevNET)
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
The title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
masabamasaba
Define the academic and professional writing..pdf
Define the academic and professional writing..pdf
PearlKirahMaeRagusta1
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
Shane Coughlan
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
HimanshiGarg82
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Bert Jan Schrijver
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
SelfMade bd
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
masabamasaba
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
masabamasaba
Recently uploaded
(20)
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Software Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Direct Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension Aid
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
The title is not connected to what is inside
The title is not connected to what is inside
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
Define the academic and professional writing..pdf
Define the academic and professional writing..pdf
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
Solid principles
1.
SOLID PRINCIPLES SOLID CODE Vytautas
Dagilis
2.
“EMPLOYEES WHO WERE
NEVER COMPETENT ARE PROMOTEDTO MANAGEMENTTO LIMIT THE DAMAGETHEY CAN DO” © Scott Adams
3.
ROBERT C. MARTIN a.k.a.
Uncle Bob https://blog.cleancoder.com
4.
WHY DOES GOOD
CODE MATTER?
5.
WE DID NOT
GET INTHE BUSINESS OF SOFTWARETO KILL PEOPLE; BUT WE ARE KILLING PEOPLE © Uncle Bob
6.
WHO WRITES BAD
CODE?
7.
WHAT IS GOOD
CODE!?
8.
SINGLE RESPONSIBILITY Every module
or class should have responsibility over a single part of the functionality provided by the software
9.
class Post { void CreatePost(Database
db, string postMessage) { try { db.Add(postMessage); } catch (Exception ex) { db.LogError("An error occured: ", ex.ToString()); File.WriteAllText("LocalErrors.txt",ex.ToString()); } } }
10.
class Post { private ErrorLogger
errorLogger = new ErrorLogger(); void CreatePost(Database db, string postMessage) { try { db.Add(postMessage); } catch (Exception ex) { errorLogger.log(ex.ToString()) } } }
11.
LOOKS GOOD!?
12.
OPEN/CLOSED PRINCIPLE Software entities
(classes, modules, functions, etc.) should be open for extensions, but closed for modification.
13.
CODE SAMPLE
14.
LISKOV SUBSTITUTION PRINCIPLE If S is a
subtype of T, then objects of type T may be replaced (or substituted) with objects of type S
15.
CLIENT DOES NOT
NEEDTO KNOW SPECIFICS
16.
LOOKS ABOUT RIGHT…
17.
INTERFACE SEGREGATION PRINCIPLE The interface
segregation principle states that no client should be forced to depend on methods it does not use.
18.
19.
DEPENDENCY INVERSION PRINCIPLE High-level modules
should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions
20.
COMPILETIME DEPENDENCY
21.
COMPILETIME DEPENDENCY
22.
COMPILETIME DEPENDENCY
23.
CODE SAMPLE
24.
HEXAGONAL, ONION, CLEAN… source: https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/
25.
SOURCES • https://www.youtube.com/watch? v=QHnLmvDxGTY • https://www.youtube.com/watch? v=BHnMItX2hEQ •
https://itnext.io/solid-principles-explanation-and- examples-715b975dcad4
26.
GOOD READS
27.
QUESTIONS!?
Download now