SlideShare a Scribd company logo
SOLID -Clean Code For Mere Mortals
SOLID
Clean code for
mere mortals
SOLID -Clean Code For Mere Mortals
SOLID -Clean Code For Mere Mortals
{ What is software development?
 ‹ Software development is not (only)
   programming
 ‹ Agile Software Development:
   Principles, Patterns, and Practices
 ‹ The Pragmatic Programmer
 ‹ Manifesto for Software Craftsmanship
{ Software requirements
 ‹ Notoriously fluid
 ‹ Changes in scope
 ‹ Changes in functionalities
 ‹ Changes in environments
 ‹ The only constant is change
 ‹ We should embrace change!
{ Software Rot
 ‹ Occurs to any software that survives the
   first version
 ‹ Rigidity
 ‹ Fragility
 ‹ Immobility
 ‹ Viscosity
{ SOLID Principles
 ‹ Introduced by Robert C. Martin
   (Uncle Bob)
 ‹ An acronym of acronyms
 ‹ Not a piece of code
 ‹ Tool for “code smell” detection
{ SOLID Principles
 ‹ Single Responsibility Principle
 ‹ Open Closed Principle
 ‹ Liskov Substitution Principle
 ‹ Interface Segregation Principle
 ‹ Dependency Inversion Principle
{ SOLID
 ‹ Single Responsibility Principle
 ‹ Single Level of abstraction
 ‹ Just one reason to change
 ‹ Antithesis of the “God” object
SRP IN ACTION
{ SOLID
 ‹ Open Closed Principle
 ‹ Inspired from work on Eiffel
 ‹ Open for extensions
 ‹ Closed for modification
 ‹ Use polymorphic behaviours
OCP IN ACTION
{ SOLID
 ‹ Liskov Substitution Principle
 ‹ Named after Barbara Liskov
 ‹ Subclasses should be substitutable
   for their base classes.
 ‹ Design by Contract
 ‹ A Circle is not an Ellipse
LSP IN ACTION
{ SOLID
 ‹ Interface Segregation Principle
 ‹ It’s not always about the `interface`
   keyword
 ‹ An interface should have a single
   purpose
 ‹ An interface should define a client
ISP IN ACTION
{ SOLID
 ‹ Dependency Inversion
 ‹ Depend upon abstractions.
 ‹ Do not depend upon concretions.
 ‹ Object creation problems – use
   object factories.
 ‹ The principle behind Inversion-of-
   control and Dependency Injection
DIP IN ACTION
{ Bonus Principle: YAGNI
 ‹ You Ain’t Gonna Need It
 ‹ Just-in-time implementation
 ‹ Avoid architecture astronauts
 ‹ Simpler code is easier to refactor
 ‹ Keep it as simple as possible, but
   not simpler
Questions?
• Complete the electronic evaluation
  forms on the computers in the hall
  and enter to win!
   – Telerik Ultimate Collection
   – RedGate .NET Reflector VSPro
   – ComponentOne Enterprise Studio Suite
   – Pluralsight yearly subscriptions
   – CodeSmith Tools Generator Pro
     Personal
   – JetBrains ReSharper
   – Semos Education Training Voucher
   – and many more…
SOLID -Clean Code For Mere Mortals

More Related Content

Viewers also liked

Clean code with SOLID principles
Clean code with SOLID principlesClean code with SOLID principles
Clean code with SOLID principles
Sahbi Jabnouni
 
SOLID and Clean Code with life project example
SOLID and Clean Code with life project exampleSOLID and Clean Code with life project example
SOLID and Clean Code with life project example
vasya_bh
 
Programming SOLID
Programming SOLIDProgramming SOLID
Programming SOLID
Ladislav Martincik
 
Don't Be STUPID, Grasp SOLID - ConFoo Edition
Don't Be STUPID, Grasp SOLID - ConFoo EditionDon't Be STUPID, Grasp SOLID - ConFoo Edition
Don't Be STUPID, Grasp SOLID - ConFoo Edition
Anthony Ferrara
 
Don't be STUPID, Grasp SOLID - North East PHP
Don't be STUPID, Grasp SOLID - North East PHPDon't be STUPID, Grasp SOLID - North East PHP
Don't be STUPID, Grasp SOLID - North East PHP
Anthony Ferrara
 
Yolimar
YolimarYolimar
Kato Mivule: COGNITIVE 2013 - An Overview of Data Privacy in Multi-Agent Lear...
Kato Mivule: COGNITIVE 2013 - An Overview of Data Privacy in Multi-Agent Lear...Kato Mivule: COGNITIVE 2013 - An Overview of Data Privacy in Multi-Agent Lear...
Kato Mivule: COGNITIVE 2013 - An Overview of Data Privacy in Multi-Agent Lear...
Kato Mivule
 
Programa de intercambio de estudiantes del consorcio para la colaboración en ...
Programa de intercambio de estudiantes del consorcio para la colaboración en ...Programa de intercambio de estudiantes del consorcio para la colaboración en ...
Programa de intercambio de estudiantes del consorcio para la colaboración en ...
Coordinación de Psicología Centro Universitario de la Costa
 
Sistemas de financiación y gestión presupuestaria
Sistemas de financiación y gestión presupuestariaSistemas de financiación y gestión presupuestaria
Sistemas de financiación y gestión presupuestaria
mbformacion
 
Musica & Mercado Revista #18
Musica & Mercado Revista #18Musica & Mercado Revista #18
Musica & Mercado Revista #18
Música & Mercado
 
Open source software to assist lower socio economic
Open source software to assist lower socio economicOpen source software to assist lower socio economic
Open source software to assist lower socio economic
Maurice Dawson
 
Feliz navidad prospero_2014
Feliz navidad prospero_2014Feliz navidad prospero_2014
Feliz navidad prospero_2014
Mtro. Lucio Antonio Torres García
 
Cartel curso defensa policial contra arma blanca 2014
Cartel curso defensa policial contra arma blanca 2014Cartel curso defensa policial contra arma blanca 2014
Cartel curso defensa policial contra arma blanca 2014
Jose Martin Sosa Granados
 
Legio xiii vs panthers parma : american football teams -business communication
Legio xiii vs panthers parma : american football teams -business communicationLegio xiii vs panthers parma : american football teams -business communication
Legio xiii vs panthers parma : american football teams -business communication
valerio italia
 
Servifone - IV Negocio Abierto Provincial CIT Marbella
Servifone - IV Negocio Abierto Provincial CIT MarbellaServifone - IV Negocio Abierto Provincial CIT Marbella
Servifone - IV Negocio Abierto Provincial CIT Marbella
CIT Marbella
 
Catalogue Sản phẩm Cassida
Catalogue Sản phẩm CassidaCatalogue Sản phẩm Cassida
Catalogue Sản phẩm Cassida
Đỗ Bá Tùng
 
Bulling
BullingBulling
La canica ingravida (recuperacion) camilo coral
La canica ingravida (recuperacion) camilo coralLa canica ingravida (recuperacion) camilo coral
La canica ingravida (recuperacion) camilo coral
camiloroblesc
 
Sida(6)(A)
Sida(6)(A)Sida(6)(A)
Sida(6)(A)
Carme Alós
 

Viewers also liked (20)

Clean code with SOLID principles
Clean code with SOLID principlesClean code with SOLID principles
Clean code with SOLID principles
 
SOLID and Clean Code with life project example
SOLID and Clean Code with life project exampleSOLID and Clean Code with life project example
SOLID and Clean Code with life project example
 
Programming SOLID
Programming SOLIDProgramming SOLID
Programming SOLID
 
Don't Be STUPID, Grasp SOLID - ConFoo Edition
Don't Be STUPID, Grasp SOLID - ConFoo EditionDon't Be STUPID, Grasp SOLID - ConFoo Edition
Don't Be STUPID, Grasp SOLID - ConFoo Edition
 
Don't be STUPID, Grasp SOLID - North East PHP
Don't be STUPID, Grasp SOLID - North East PHPDon't be STUPID, Grasp SOLID - North East PHP
Don't be STUPID, Grasp SOLID - North East PHP
 
Yolimar
YolimarYolimar
Yolimar
 
Kato Mivule: COGNITIVE 2013 - An Overview of Data Privacy in Multi-Agent Lear...
Kato Mivule: COGNITIVE 2013 - An Overview of Data Privacy in Multi-Agent Lear...Kato Mivule: COGNITIVE 2013 - An Overview of Data Privacy in Multi-Agent Lear...
Kato Mivule: COGNITIVE 2013 - An Overview of Data Privacy in Multi-Agent Lear...
 
Programa de intercambio de estudiantes del consorcio para la colaboración en ...
Programa de intercambio de estudiantes del consorcio para la colaboración en ...Programa de intercambio de estudiantes del consorcio para la colaboración en ...
Programa de intercambio de estudiantes del consorcio para la colaboración en ...
 
Fax machine3
Fax machine3Fax machine3
Fax machine3
 
Sistemas de financiación y gestión presupuestaria
Sistemas de financiación y gestión presupuestariaSistemas de financiación y gestión presupuestaria
Sistemas de financiación y gestión presupuestaria
 
Musica & Mercado Revista #18
Musica & Mercado Revista #18Musica & Mercado Revista #18
Musica & Mercado Revista #18
 
Open source software to assist lower socio economic
Open source software to assist lower socio economicOpen source software to assist lower socio economic
Open source software to assist lower socio economic
 
Feliz navidad prospero_2014
Feliz navidad prospero_2014Feliz navidad prospero_2014
Feliz navidad prospero_2014
 
Cartel curso defensa policial contra arma blanca 2014
Cartel curso defensa policial contra arma blanca 2014Cartel curso defensa policial contra arma blanca 2014
Cartel curso defensa policial contra arma blanca 2014
 
Legio xiii vs panthers parma : american football teams -business communication
Legio xiii vs panthers parma : american football teams -business communicationLegio xiii vs panthers parma : american football teams -business communication
Legio xiii vs panthers parma : american football teams -business communication
 
Servifone - IV Negocio Abierto Provincial CIT Marbella
Servifone - IV Negocio Abierto Provincial CIT MarbellaServifone - IV Negocio Abierto Provincial CIT Marbella
Servifone - IV Negocio Abierto Provincial CIT Marbella
 
Catalogue Sản phẩm Cassida
Catalogue Sản phẩm CassidaCatalogue Sản phẩm Cassida
Catalogue Sản phẩm Cassida
 
Bulling
BullingBulling
Bulling
 
La canica ingravida (recuperacion) camilo coral
La canica ingravida (recuperacion) camilo coralLa canica ingravida (recuperacion) camilo coral
La canica ingravida (recuperacion) camilo coral
 
Sida(6)(A)
Sida(6)(A)Sida(6)(A)
Sida(6)(A)
 

Similar to SOLID -Clean Code For Mere Mortals

bGenius kennissessie_20120510
bGenius kennissessie_20120510bGenius kennissessie_20120510
bGenius kennissessie_20120510
bgenius
 
SOLID Code
SOLID CodeSOLID Code
SOLID Code
NETUserGroupBern
 
Object Oriented Design Principles
Object Oriented Design PrinciplesObject Oriented Design Principles
Object Oriented Design Principles
Thang Tran Duc
 
Refactoring to SOLID Code
Refactoring to SOLID CodeRefactoring to SOLID Code
Refactoring to SOLID Code
Adil Mughal
 
Solid principles of oo design
Solid principles of oo designSolid principles of oo design
Solid principles of oo design
Confiz
 
Solid OO & Clean Coding is essential to successful Agile development
Solid OO & Clean Coding is essential to successful Agile developmentSolid OO & Clean Coding is essential to successful Agile development
Solid OO & Clean Coding is essential to successful Agile development
Simon Gould
 
There is REST and then there is "REST"
There is REST and then there is "REST"There is REST and then there is "REST"
There is REST and then there is "REST"
Radovan Semancik
 
The Architect Way
The Architect WayThe Architect Way
The Architect Way
Jan Jongboom
 
SOLID design principles in Ruby
SOLID design principles in RubySOLID design principles in Ruby
SOLID design principles in Ruby
Anil Wadghule
 
Principles of Object Oriented Design
Principles of Object Oriented DesignPrinciples of Object Oriented Design
Principles of Object Oriented Design
Jon Kartago Lamida
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
Roc Boronat
 
Design for testability as a way to good coding (SOLID and IoC)
Design for testability as a way to good coding (SOLID and IoC)Design for testability as a way to good coding (SOLID and IoC)
Design for testability as a way to good coding (SOLID and IoC)
Simone Chiaretta
 
Developer's QA Toolkit - 34th National IT Conference - Sri Lanka
Developer's QA Toolkit - 34th National IT Conference - Sri LankaDeveloper's QA Toolkit - 34th National IT Conference - Sri Lanka
Developer's QA Toolkit - 34th National IT Conference - Sri Lanka
Chamil Jeewantha
 
SOLID Design principles
SOLID Design principlesSOLID Design principles
SOLID Design principles
Mohamed Sanaulla
 
Beyond The Rails Way
Beyond The Rails WayBeyond The Rails Way
Beyond The Rails Way
Andrzej Krzywda
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
Stanislav Petrov
 
London SDET Meetup main presentation - How SDET can transform your organisati...
London SDET Meetup main presentation - How SDET can transform your organisati...London SDET Meetup main presentation - How SDET can transform your organisati...
London SDET Meetup main presentation - How SDET can transform your organisati...
Sriram Angajala
 
Software design - Write solid software with the ideal chalk
Software design - Write solid software with the  ideal chalkSoftware design - Write solid software with the  ideal chalk
Software design - Write solid software with the ideal chalk
Alejandro Claro Mosqueda
 
Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"
LogeekNightUkraine
 
Java interfaces design perspective
Java interfaces design perspectiveJava interfaces design perspective
Java interfaces design perspective
Manigandan Venkataraman
 

Similar to SOLID -Clean Code For Mere Mortals (20)

bGenius kennissessie_20120510
bGenius kennissessie_20120510bGenius kennissessie_20120510
bGenius kennissessie_20120510
 
SOLID Code
SOLID CodeSOLID Code
SOLID Code
 
Object Oriented Design Principles
Object Oriented Design PrinciplesObject Oriented Design Principles
Object Oriented Design Principles
 
Refactoring to SOLID Code
Refactoring to SOLID CodeRefactoring to SOLID Code
Refactoring to SOLID Code
 
Solid principles of oo design
Solid principles of oo designSolid principles of oo design
Solid principles of oo design
 
Solid OO & Clean Coding is essential to successful Agile development
Solid OO & Clean Coding is essential to successful Agile developmentSolid OO & Clean Coding is essential to successful Agile development
Solid OO & Clean Coding is essential to successful Agile development
 
There is REST and then there is "REST"
There is REST and then there is "REST"There is REST and then there is "REST"
There is REST and then there is "REST"
 
The Architect Way
The Architect WayThe Architect Way
The Architect Way
 
SOLID design principles in Ruby
SOLID design principles in RubySOLID design principles in Ruby
SOLID design principles in Ruby
 
Principles of Object Oriented Design
Principles of Object Oriented DesignPrinciples of Object Oriented Design
Principles of Object Oriented Design
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
Design for testability as a way to good coding (SOLID and IoC)
Design for testability as a way to good coding (SOLID and IoC)Design for testability as a way to good coding (SOLID and IoC)
Design for testability as a way to good coding (SOLID and IoC)
 
Developer's QA Toolkit - 34th National IT Conference - Sri Lanka
Developer's QA Toolkit - 34th National IT Conference - Sri LankaDeveloper's QA Toolkit - 34th National IT Conference - Sri Lanka
Developer's QA Toolkit - 34th National IT Conference - Sri Lanka
 
SOLID Design principles
SOLID Design principlesSOLID Design principles
SOLID Design principles
 
Beyond The Rails Way
Beyond The Rails WayBeyond The Rails Way
Beyond The Rails Way
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
London SDET Meetup main presentation - How SDET can transform your organisati...
London SDET Meetup main presentation - How SDET can transform your organisati...London SDET Meetup main presentation - How SDET can transform your organisati...
London SDET Meetup main presentation - How SDET can transform your organisati...
 
Software design - Write solid software with the ideal chalk
Software design - Write solid software with the  ideal chalkSoftware design - Write solid software with the  ideal chalk
Software design - Write solid software with the ideal chalk
 
Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"Pavlo Zhdanov "Mastering solid and base principles for software design"
Pavlo Zhdanov "Mastering solid and base principles for software design"
 
Java interfaces design perspective
Java interfaces design perspectiveJava interfaces design perspective
Java interfaces design perspective
 

More from Wekoslav Stefanovski

Make you a Redux for fun and profit!
Make you a Redux for fun and profit!Make you a Redux for fun and profit!
Make you a Redux for fun and profit!
Wekoslav Stefanovski
 
Blazor - C# for the web
Blazor - C# for the webBlazor - C# for the web
Blazor - C# for the web
Wekoslav Stefanovski
 
Asynchrony on the web
Asynchrony on the webAsynchrony on the web
Asynchrony on the web
Wekoslav Stefanovski
 
Servers? We don't need no stinking servers
Servers? We don't need no stinking serversServers? We don't need no stinking servers
Servers? We don't need no stinking servers
Wekoslav Stefanovski
 
Typescript Decorators
Typescript DecoratorsTypescript Decorators
Typescript Decorators
Wekoslav Stefanovski
 
Coding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applicationsCoding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applications
Wekoslav Stefanovski
 
Through Meteor to the stars - Developing full-stack SPA's with meteor.js
Through Meteor to the stars - Developing full-stack SPA's with meteor.jsThrough Meteor to the stars - Developing full-stack SPA's with meteor.js
Through Meteor to the stars - Developing full-stack SPA's with meteor.js
Wekoslav Stefanovski
 
TypeScript 1.6 - How I learned to Stop Worrying and Love JavaScript
TypeScript 1.6 - How I learned to Stop Worrying and Love JavaScriptTypeScript 1.6 - How I learned to Stop Worrying and Love JavaScript
TypeScript 1.6 - How I learned to Stop Worrying and Love JavaScript
Wekoslav Stefanovski
 
How to write bad code using C#
How to write bad code using C#How to write bad code using C#
How to write bad code using C#
Wekoslav Stefanovski
 
Garbage Collection .Net
Garbage Collection .NetGarbage Collection .Net
Garbage Collection .Net
Wekoslav Stefanovski
 
Testing your Single Page Application
Testing your Single Page ApplicationTesting your Single Page Application
Testing your Single Page Application
Wekoslav Stefanovski
 
Smoke and Mirrors - Reflection in C#
Smoke and Mirrors - Reflection in C#Smoke and Mirrors - Reflection in C#
Smoke and Mirrors - Reflection in C#
Wekoslav Stefanovski
 
TypeScript - Javascript done right
TypeScript - Javascript done rightTypeScript - Javascript done right
TypeScript - Javascript done right
Wekoslav Stefanovski
 
Entity Framework 5 - Code First
Entity Framework 5 - Code FirstEntity Framework 5 - Code First
Entity Framework 5 - Code First
Wekoslav Stefanovski
 

More from Wekoslav Stefanovski (14)

Make you a Redux for fun and profit!
Make you a Redux for fun and profit!Make you a Redux for fun and profit!
Make you a Redux for fun and profit!
 
Blazor - C# for the web
Blazor - C# for the webBlazor - C# for the web
Blazor - C# for the web
 
Asynchrony on the web
Asynchrony on the webAsynchrony on the web
Asynchrony on the web
 
Servers? We don't need no stinking servers
Servers? We don't need no stinking serversServers? We don't need no stinking servers
Servers? We don't need no stinking servers
 
Typescript Decorators
Typescript DecoratorsTypescript Decorators
Typescript Decorators
 
Coding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applicationsCoding for the cloud - development of modern web applications
Coding for the cloud - development of modern web applications
 
Through Meteor to the stars - Developing full-stack SPA's with meteor.js
Through Meteor to the stars - Developing full-stack SPA's with meteor.jsThrough Meteor to the stars - Developing full-stack SPA's with meteor.js
Through Meteor to the stars - Developing full-stack SPA's with meteor.js
 
TypeScript 1.6 - How I learned to Stop Worrying and Love JavaScript
TypeScript 1.6 - How I learned to Stop Worrying and Love JavaScriptTypeScript 1.6 - How I learned to Stop Worrying and Love JavaScript
TypeScript 1.6 - How I learned to Stop Worrying and Love JavaScript
 
How to write bad code using C#
How to write bad code using C#How to write bad code using C#
How to write bad code using C#
 
Garbage Collection .Net
Garbage Collection .NetGarbage Collection .Net
Garbage Collection .Net
 
Testing your Single Page Application
Testing your Single Page ApplicationTesting your Single Page Application
Testing your Single Page Application
 
Smoke and Mirrors - Reflection in C#
Smoke and Mirrors - Reflection in C#Smoke and Mirrors - Reflection in C#
Smoke and Mirrors - Reflection in C#
 
TypeScript - Javascript done right
TypeScript - Javascript done rightTypeScript - Javascript done right
TypeScript - Javascript done right
 
Entity Framework 5 - Code First
Entity Framework 5 - Code FirstEntity Framework 5 - Code First
Entity Framework 5 - Code First
 

Recently uploaded

13The Eight Coolest Inventions From the 2024 Consumer
13The Eight Coolest Inventions From the 2024 Consumer13The Eight Coolest Inventions From the 2024 Consumer
13The Eight Coolest Inventions From the 2024 Consumer
aryansarma368
 
How to Manage Self Care in Daily Lives of Yours?
How to Manage Self Care in Daily Lives of Yours?How to Manage Self Care in Daily Lives of Yours?
How to Manage Self Care in Daily Lives of Yours?
StrengthsTheatre
 
UOL biyezheng degree offer diploma Transcript
UOL biyezheng degree offer diploma TranscriptUOL biyezheng degree offer diploma Transcript
UOL biyezheng degree offer diploma Transcript
gygab
 
What Are Machiavellianism, Psychopathy, and Narcissism?
What Are Machiavellianism, Psychopathy, and Narcissism?What Are Machiavellianism, Psychopathy, and Narcissism?
What Are Machiavellianism, Psychopathy, and Narcissism?
digitalsole
 
High Girls Call Chennai 000XX00000 Provide Best And Top Girl Service And No1 ...
High Girls Call Chennai 000XX00000 Provide Best And Top Girl Service And No1 ...High Girls Call Chennai 000XX00000 Provide Best And Top Girl Service And No1 ...
High Girls Call Chennai 000XX00000 Provide Best And Top Girl Service And No1 ...
rajvarma123614
 
Girls Call Bhubaneswar 000XX00000 Provide Best And Top Girl Service And No1 i...
Girls Call Bhubaneswar 000XX00000 Provide Best And Top Girl Service And No1 i...Girls Call Bhubaneswar 000XX00000 Provide Best And Top Girl Service And No1 i...
Girls Call Bhubaneswar 000XX00000 Provide Best And Top Girl Service And No1 i...
rawankhanlove256
 
Vadodara Girls Call Vadodara 0X0000000X Unlimited Short Providing Girls Servi...
Vadodara Girls Call Vadodara 0X0000000X Unlimited Short Providing Girls Servi...Vadodara Girls Call Vadodara 0X0000000X Unlimited Short Providing Girls Servi...
Vadodara Girls Call Vadodara 0X0000000X Unlimited Short Providing Girls Servi...
rachitkumar09887
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_5
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_57 Habits for Faithful Living: A Christian's Guide to Covey's Principles_5
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_5
earthsalt1
 
Private Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service And...
Private Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service And...Private Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service And...
Private Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service And...
3610stuck
 
Mysore Girls Call Mysore 0X0000000X Unlimited Short Providing Girls Service A...
Mysore Girls Call Mysore 0X0000000X Unlimited Short Providing Girls Service A...Mysore Girls Call Mysore 0X0000000X Unlimited Short Providing Girls Service A...
Mysore Girls Call Mysore 0X0000000X Unlimited Short Providing Girls Service A...
rachitkumar09887
 
High Profile Girls Call Mumbai 🎈🔥9930687706 🔥💋🎈 Provide Best And Top Girl Ser...
High Profile Girls Call Mumbai 🎈🔥9930687706 🔥💋🎈 Provide Best And Top Girl Ser...High Profile Girls Call Mumbai 🎈🔥9930687706 🔥💋🎈 Provide Best And Top Girl Ser...
High Profile Girls Call Mumbai 🎈🔥9930687706 🔥💋🎈 Provide Best And Top Girl Ser...
shanihomely
 
7 Rules For A Successful Life presentation by Rohit Chandra Thakur
7 Rules For A Successful Life presentation by Rohit Chandra Thakur7 Rules For A Successful Life presentation by Rohit Chandra Thakur
7 Rules For A Successful Life presentation by Rohit Chandra Thakur
Rohit Chandra
 
Balancing Work and Life as a Young Entrepreneur by Vinod Adani
Balancing Work and Life as a Young Entrepreneur by Vinod AdaniBalancing Work and Life as a Young Entrepreneur by Vinod Adani
Balancing Work and Life as a Young Entrepreneur by Vinod Adani
Vinod Adani
 
The Benefits of Mindfulness Practices for Mental Clarity and Focus.pptx
The Benefits of Mindfulness Practices for Mental Clarity and Focus.pptxThe Benefits of Mindfulness Practices for Mental Clarity and Focus.pptx
The Benefits of Mindfulness Practices for Mental Clarity and Focus.pptx
Vinod Adani
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_2
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_27 Habits for Faithful Living: A Christian's Guide to Covey's Principles_2
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_2
earthsalt1
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_6
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_67 Habits for Faithful Living: A Christian's Guide to Covey's Principles_6
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_6
earthsalt1
 
UoB biyezheng degree offer diploma Transcript
UoB biyezheng degree offer diploma TranscriptUoB biyezheng degree offer diploma Transcript
UoB biyezheng degree offer diploma Transcript
gygab
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_3
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_37 Habits for Faithful Living: A Christian's Guide to Covey's Principles_3
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_3
earthsalt1
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_7
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_77 Habits for Faithful Living: A Christian's Guide to Covey's Principles_7
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_7
earthsalt1
 
For all the dogs and idiots that play with me
For all the dogs and idiots that play with meFor all the dogs and idiots that play with me
For all the dogs and idiots that play with me
salmi ewwww
 

Recently uploaded (20)

13The Eight Coolest Inventions From the 2024 Consumer
13The Eight Coolest Inventions From the 2024 Consumer13The Eight Coolest Inventions From the 2024 Consumer
13The Eight Coolest Inventions From the 2024 Consumer
 
How to Manage Self Care in Daily Lives of Yours?
How to Manage Self Care in Daily Lives of Yours?How to Manage Self Care in Daily Lives of Yours?
How to Manage Self Care in Daily Lives of Yours?
 
UOL biyezheng degree offer diploma Transcript
UOL biyezheng degree offer diploma TranscriptUOL biyezheng degree offer diploma Transcript
UOL biyezheng degree offer diploma Transcript
 
What Are Machiavellianism, Psychopathy, and Narcissism?
What Are Machiavellianism, Psychopathy, and Narcissism?What Are Machiavellianism, Psychopathy, and Narcissism?
What Are Machiavellianism, Psychopathy, and Narcissism?
 
High Girls Call Chennai 000XX00000 Provide Best And Top Girl Service And No1 ...
High Girls Call Chennai 000XX00000 Provide Best And Top Girl Service And No1 ...High Girls Call Chennai 000XX00000 Provide Best And Top Girl Service And No1 ...
High Girls Call Chennai 000XX00000 Provide Best And Top Girl Service And No1 ...
 
Girls Call Bhubaneswar 000XX00000 Provide Best And Top Girl Service And No1 i...
Girls Call Bhubaneswar 000XX00000 Provide Best And Top Girl Service And No1 i...Girls Call Bhubaneswar 000XX00000 Provide Best And Top Girl Service And No1 i...
Girls Call Bhubaneswar 000XX00000 Provide Best And Top Girl Service And No1 i...
 
Vadodara Girls Call Vadodara 0X0000000X Unlimited Short Providing Girls Servi...
Vadodara Girls Call Vadodara 0X0000000X Unlimited Short Providing Girls Servi...Vadodara Girls Call Vadodara 0X0000000X Unlimited Short Providing Girls Servi...
Vadodara Girls Call Vadodara 0X0000000X Unlimited Short Providing Girls Servi...
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_5
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_57 Habits for Faithful Living: A Christian's Guide to Covey's Principles_5
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_5
 
Private Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service And...
Private Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service And...Private Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service And...
Private Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service And...
 
Mysore Girls Call Mysore 0X0000000X Unlimited Short Providing Girls Service A...
Mysore Girls Call Mysore 0X0000000X Unlimited Short Providing Girls Service A...Mysore Girls Call Mysore 0X0000000X Unlimited Short Providing Girls Service A...
Mysore Girls Call Mysore 0X0000000X Unlimited Short Providing Girls Service A...
 
High Profile Girls Call Mumbai 🎈🔥9930687706 🔥💋🎈 Provide Best And Top Girl Ser...
High Profile Girls Call Mumbai 🎈🔥9930687706 🔥💋🎈 Provide Best And Top Girl Ser...High Profile Girls Call Mumbai 🎈🔥9930687706 🔥💋🎈 Provide Best And Top Girl Ser...
High Profile Girls Call Mumbai 🎈🔥9930687706 🔥💋🎈 Provide Best And Top Girl Ser...
 
7 Rules For A Successful Life presentation by Rohit Chandra Thakur
7 Rules For A Successful Life presentation by Rohit Chandra Thakur7 Rules For A Successful Life presentation by Rohit Chandra Thakur
7 Rules For A Successful Life presentation by Rohit Chandra Thakur
 
Balancing Work and Life as a Young Entrepreneur by Vinod Adani
Balancing Work and Life as a Young Entrepreneur by Vinod AdaniBalancing Work and Life as a Young Entrepreneur by Vinod Adani
Balancing Work and Life as a Young Entrepreneur by Vinod Adani
 
The Benefits of Mindfulness Practices for Mental Clarity and Focus.pptx
The Benefits of Mindfulness Practices for Mental Clarity and Focus.pptxThe Benefits of Mindfulness Practices for Mental Clarity and Focus.pptx
The Benefits of Mindfulness Practices for Mental Clarity and Focus.pptx
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_2
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_27 Habits for Faithful Living: A Christian's Guide to Covey's Principles_2
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_2
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_6
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_67 Habits for Faithful Living: A Christian's Guide to Covey's Principles_6
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_6
 
UoB biyezheng degree offer diploma Transcript
UoB biyezheng degree offer diploma TranscriptUoB biyezheng degree offer diploma Transcript
UoB biyezheng degree offer diploma Transcript
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_3
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_37 Habits for Faithful Living: A Christian's Guide to Covey's Principles_3
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_3
 
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_7
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_77 Habits for Faithful Living: A Christian's Guide to Covey's Principles_7
7 Habits for Faithful Living: A Christian's Guide to Covey's Principles_7
 
For all the dogs and idiots that play with me
For all the dogs and idiots that play with meFor all the dogs and idiots that play with me
For all the dogs and idiots that play with me
 

SOLID -Clean Code For Mere Mortals

  • 5. { What is software development? ‹ Software development is not (only) programming ‹ Agile Software Development: Principles, Patterns, and Practices ‹ The Pragmatic Programmer ‹ Manifesto for Software Craftsmanship
  • 6. { Software requirements ‹ Notoriously fluid ‹ Changes in scope ‹ Changes in functionalities ‹ Changes in environments ‹ The only constant is change ‹ We should embrace change!
  • 7. { Software Rot ‹ Occurs to any software that survives the first version ‹ Rigidity ‹ Fragility ‹ Immobility ‹ Viscosity
  • 8. { SOLID Principles ‹ Introduced by Robert C. Martin (Uncle Bob) ‹ An acronym of acronyms ‹ Not a piece of code ‹ Tool for “code smell” detection
  • 9. { SOLID Principles ‹ Single Responsibility Principle ‹ Open Closed Principle ‹ Liskov Substitution Principle ‹ Interface Segregation Principle ‹ Dependency Inversion Principle
  • 10. { SOLID ‹ Single Responsibility Principle ‹ Single Level of abstraction ‹ Just one reason to change ‹ Antithesis of the “God” object
  • 12. { SOLID ‹ Open Closed Principle ‹ Inspired from work on Eiffel ‹ Open for extensions ‹ Closed for modification ‹ Use polymorphic behaviours
  • 14. { SOLID ‹ Liskov Substitution Principle ‹ Named after Barbara Liskov ‹ Subclasses should be substitutable for their base classes. ‹ Design by Contract ‹ A Circle is not an Ellipse
  • 16. { SOLID ‹ Interface Segregation Principle ‹ It’s not always about the `interface` keyword ‹ An interface should have a single purpose ‹ An interface should define a client
  • 18. { SOLID ‹ Dependency Inversion ‹ Depend upon abstractions. ‹ Do not depend upon concretions. ‹ Object creation problems – use object factories. ‹ The principle behind Inversion-of- control and Dependency Injection
  • 20. { Bonus Principle: YAGNI ‹ You Ain’t Gonna Need It ‹ Just-in-time implementation ‹ Avoid architecture astronauts ‹ Simpler code is easier to refactor ‹ Keep it as simple as possible, but not simpler
  • 21. Questions? • Complete the electronic evaluation forms on the computers in the hall and enter to win! – Telerik Ultimate Collection – RedGate .NET Reflector VSPro – ComponentOne Enterprise Studio Suite – Pluralsight yearly subscriptions – CodeSmith Tools Generator Pro Personal – JetBrains ReSharper – Semos Education Training Voucher – and many more…