Advanced oop laws, principles, idioms

40
Advanced OOP Laws Ÿ Principles Ÿ Idioms Clint Edmonson Senior Consultant Polaris Solutions [email protected]

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.

Transcript of Advanced oop laws, principles, idioms

Page 1: Advanced oop laws, principles, idioms

Advanced OOPLaws Ÿ Principles Ÿ Idioms

Clint EdmonsonSenior Consultant

Polaris [email protected]

Page 2: Advanced oop laws, principles, idioms

Platinum Sponsors

Silver Sponsors

Gold Sponsors

Page 3: Advanced oop laws, principles, idioms

what is oop?

Page 4: Advanced oop laws, principles, idioms
Page 5: Advanced oop laws, principles, idioms

abstractionencapsulation

inheritancepolymorphism

Page 6: Advanced oop laws, principles, idioms

structural

Page 7: Advanced oop laws, principles, idioms

domain driven design

All software can be composed of only four elements:

- Value objects - Entities- Services- Modules

Page 8: Advanced oop laws, principles, idioms

separation of concerns

Every class and method should have a single responsibility.

All its functionality should be narrowly aligned with that responsibility.

Page 9: Advanced oop laws, principles, idioms

the DRY principle

Don’t repeat yourself.Don’t repeat yourself.Don’t repeat yourself.

Page 10: Advanced oop laws, principles, idioms

theory 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.

Page 11: Advanced oop laws, principles, idioms

unit of workDefine entity families around transactional boundaries and aggregate root entities.

Page 12: Advanced oop laws, principles, idioms

the open-closed principle

Software entities (classes, methods, and modules) should be

open for extension

but closed for modification.

Page 13: Advanced oop laws, principles, idioms

design by contractFortify your methods through

preconditions, post-conditions, and invariant assertions.

Page 14: Advanced oop laws, principles, idioms
Page 15: Advanced oop laws, principles, idioms

creational

Page 16: Advanced oop laws, principles, idioms

declarative programming

Use attributes to describe what you want to happen and leverage a framework will take care of the how.

Page 17: Advanced oop laws, principles, idioms
Page 18: Advanced oop laws, principles, idioms

the provider model

Define a public service façade that uses an private implementation to perform all of it’s work.

Page 19: Advanced oop laws, principles, idioms

the provider model

code example

Page 20: Advanced oop laws, principles, idioms

inversion of control

Hide implementation details by letting subsystems automatically create their objects as they are needed.

Page 21: Advanced oop laws, principles, idioms

inversion of control

code example

Page 22: Advanced oop laws, principles, idioms

dependency injection

Declaratively describe dependencies between classes and an IOC framework can automatically instantiate all of them.

Page 23: Advanced oop laws, principles, idioms

dependency injection

code example

Page 24: Advanced oop laws, principles, idioms

object:relational mapping

Leverage IOC and dependency injection to automatically load entities from your database.

Page 25: Advanced oop laws, principles, idioms

behavioral

Page 26: Advanced oop laws, principles, idioms

principle of scenario driven design

All functionality should be driven by usage scenarios.

Page 27: Advanced oop laws, principles, idioms

occam’s razor

The simplest solution is usually the best.

Page 28: Advanced oop laws, principles, idioms

the pareto principle

For many phenomena, 80% of the consequences stem from 20% of the causes

Page 29: Advanced oop laws, principles, idioms

the 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

Page 30: Advanced oop laws, principles, idioms

principle of least resource usage

The minimal amount of computational resources should be used to solve a particular need.

Page 31: Advanced oop laws, principles, idioms

principle 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 stateless and private as possible.

Page 32: Advanced oop laws, principles, idioms

the liskov substitution principle

A derived class should be completely and transparently substitutable for it’s base class.

Page 33: Advanced oop laws, principles, idioms

idempotents

Transactional systems should allow thesame information to be received multiple times without being reprocessed.

Page 34: Advanced oop laws, principles, idioms

cyclomatic complexity

The depth of nested logic should be kept to a minimum.

Page 35: Advanced oop laws, principles, idioms

What are your principles?

Page 36: Advanced oop laws, principles, idioms
Page 37: Advanced oop laws, principles, idioms
Page 38: Advanced oop laws, principles, idioms

Books– Code Complete - McConnell– Domain Driven Design – Evans– 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– SOLID Principles (Wikipedia)

References

Page 39: Advanced oop laws, principles, idioms

Clint Edmonson

Email: [email protected]

Blog: http://www.notsotrivial.net

Twitter: @clinted

Page 40: Advanced oop laws, principles, idioms