Upload
clint-edmonson
View
6.501
Download
0
Embed Size (px)
DESCRIPTION
Ever heard of the Law of Demeter? How about the Liskov Substitution Principle? This talk introduces key object-oriented laws and principles currently used in our field and provides guidance for their use when building applications on the .NET platform.
Citation preview
Advanced OOPAdvanced OOPLawsLaws Principles Principles IdiomsIdioms
Clint EdmonsonClint Edmonson
Advanced OOPAdvanced OOPLawsLaws Principles Principles IdiomsIdioms
Clint EdmonsonClint Edmonson
what is oop?what is oop?
abstractionabstractionencapsulationencapsulation
inheritanceinheritance
polymorphismpolymorphism
structuralstructural
domain driven designdomain driven design
All software can be composed of only four elements:
- Value objects - Entities- Services- Modules
separation of concernsseparation of concerns
Every class and method should have a single responsibility.
All its functionality should be narrowly aligned with that responsibility.
the DRY principle
Don’t repeat yourself.Don’t repeat yourself.Don’t repeat yourself.
theory of one right placetheory of one right place
There should be only one right place for a piece of nontrivial of code,
and one right place to make a likely maintenance change.
unit of workunit of workDefine entity families around transactional boundaries.
the open-closed principlethe open-closed principle
Software entities (classes, methods, and modules) should be
open for extension
but closed for modification.
design by contractFortify your methods through
preconditions, post-conditions, and invariant assertions.
creationalcreational
declarative programming
Use attributes to describe what you want to happen and leverage a framework will take care of the how.
the provider modelthe provider model
Define a public service façade that uses an private implementation to perform all of it’s work.
inversion of controlinversion of control
Leverage configuration files to automatically create objects as they are needed.
dependency injectiondependency injection
Declaratively describe dependencies between classes and an IOC framework can automatically instantiate all of them.
object:relational mappingobject:relational mapping
Leverage IOC and dependency injection to automatically load entities from your database.
behavioralbehavioral
principle of scenario driven designprinciple of scenario driven design
All functionality should be driven by usage scenarios.
occam’s razoroccam’s razor
The simplest solution is usually the best.
the pareto principlethe pareto principle
For many phenomena, 80% of the consequences stem from 20% of the causes
the law of demeterthe law of demeter“Don’t talk to your neighbor’s neighbor!”
An object should only call methods and properties belonging to:
- Itself- Any parameters passed in- Objects it creates- Child components
principle of least resource usage
principle of least resource usage
The minimal amount of computational resources should be used to solve a particular need.
principle of least privilegeprinciple of least privilege
Provide the minimal level of access necessary for consumers to do their job.
Combined with the previous principle…
Classes and methods should be as static and private as possible.
the liskov substitution principlethe liskov substitution principle
A derived class should be completely and transparently substitutable for it’s base class.
idempotentsidempotents
Transactional systems should allow thesame information to be received multiple times without being reprocessed.
cyclomatic complexitycyclomatic complexity
The depth of nested logic should be kept to a minimum.
What are What are youryour principles?principles?What are What are youryour principles?principles?
Books– Code Complete - McConnell– Effective C# - Wagner– Framework Design Guidelines – Cwalina & Abrams– Writing Solid Code - Maguire
Links– Application Architecture for .NET– OO Design Principles– Principles of Object Oriented Design– Separation of Concerns (Wikipedia)
References
© 2008 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this information.