Presentation on theme: "St Louis Day of.NET 2011 Refactoring to a SOLID Foundation Steve Bohlen Senior Software Engineer SpringSource/VMware Blog:"— Presentation transcript:
St Louis Day of.NET 2011 Refactoring to a SOLID Foundation Steve Bohlen Senior Software Engineer SpringSource/VMware E-Mail: firstname.lastname@example.org Blog: http://blog.unhandled-exceptions.com Twitter: @sbohlen
St Louis Day of.NET 2011 Do I suck? Let me (and the world) know! http://spkr8.com/t/8095
St Louis Day of.NET 2011 Who am I? …and why should you care? Steve Bohlen I Read Books + Write Software vs. “Read Software + Write Books” Blog, Screencast, Speak, Share, Learn
St Louis Day of.NET 2011 Steve Bohlen Nearly 20 years developing software LISP, Delphi, C/C++, VB, VB.NET, C# Senior Engineer Springsource/VMware Co-Founder, NYC Alt.Net User Group http://nyalt.net Co-Organizer, NYC DDD User Group http://dddnyc.org Contributor: various OSS projects NHibernate http://www.nhforge.org NDbUnit http://www.googlecode.com/ndbunit Spring.NET http://www.springframework.net blog: http://blog.unhandled-exceptions.com e-mail: email@example.com twitter: @sbohlen
St Louis Day of.NET 2011 RAD Controls for ASP.NET AJAX RAD Controls for Silverlight RAD Controls for Windows Phone RAD Controls for Winforms RAD Controls for WPF Telerik Reporting Telerik OpenAccess ORM Telerik JustCode Telerik JustMock Telerik Extensions for ASP.NET MVC Test Studio Express Telerik TeamPulse Telerik Test Studio Sitefinity CMS Telerik JustDecompile C#/VB.NET Converter ASPX to Razor Converter
Disciplined technique Restructuring an existing body of code Altering its internal structure without changing its external behavior A series of small behavior-preserving transformations Each 'refactoring’ does little by itself A sequence of transformations can produce a significant restructuring Each refactoring is small so it's less likely to go wrong The system is kept fully working after each small refactoring Refactoring
Liskov Substitution Principle If for each object o 1 of type S there is an object o 2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o 1 is substituted for o 2, then S is a subtype of T. WTF ?!?
St Louis Day of.NET 2011 Liskov Substitution Principle Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.
St Louis Day of.NET 2011 Refactoring to a S.O.L.I.D. Foundation LSP Demo
St Louis Day of.NET 2011 Introduction to S.O.L.I.D. SOLIDSOLID ingle Responsibility Principle pen-Close Principle iskov Substitution Principle nterface Segregation Principle ependency Inversion Principle
Dependency Inversion Principle High Level Modules should not depend upon Low Level Modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.
St Louis Day of.NET 2011 Refactoring to a S.O.L.I.D. Foundation DIP Demo
St Louis Day of.NET 2011 Thinking About Re-Assembly Presto!
St Louis Day of.NET 2011 Dependency Injection Frameworks StructureMap Spring.NET Castle Windsor NInject Funq Unity More…
St Louis Day of.NET 2011 Refactoring to a S.O.L.I.D. Foundation Closing Thoughts