Learning how to use the Extract Interface Technique
Published February 22nd, 2010 Under Agile, Coding | Leave a Comment
In this episode we are going to take a look at another refactoring technique, the Extract Interface technique. This technique allows you to extract an interface from a class in order to break your concrete dependencies. By doing this you can provide yourself with better testing support as well as a better layer of abstractions.
http://www.dimecasts.net/Content/WatchEpisode/163
How Do I Refactor my Code in Visual Studio?
Published January 14th, 2010 Under Agile, Coding | Leave a Comment
These two videos show how to use the refactoring tools in Visual Studio.
Eliminating Static Dependencies
Published August 21st, 2009 Under Agile, Software Testing | Leave a Comment
Nature abhors a vacuum. It turns out she also abhors static dependencies (I have my sources). Static dependencies are the modern-day globals, often exposed through classes named “Helper”. I’ve certainly been guilty of overusing static dependencies in the past, with classes like “LoggingHelper”, “SessionHelper”, “DBHelper” and so on. The problem with static dependencies is that they are opaque to the extreme, enforcing a strong coupling that is impossible to see from users of the class. To demonstrate techniques for eliminating static dependencies, Ray Houston and Jimmy Bogard created a short screencast. The screencast demonstrates using TDD along with ideas and techniques laid out in Michael Feathers’ Working Effectively with Legacy Code and Joshua Kerievsky’s Refactoring to Patterns. It details how to make safe, responsible changes to an existing legacy codebase, while improving the design by breaking out dependencies to a static class.
Watch this screencast on Pablo TV
Refactoring Techniques: Learning the Wrap Method
Published August 13th, 2009 Under Agile, Coding | Leave a Comment
In this episode we are going to take a look at a refactoring technique outlined in detail in working effectively with legacy code. We will walk though this technique and take a look at how it can help you to create better and more maintainable code.
http://www.dimecasts.net/Content/WatchEpisode/134
The Joys and Pains of a Long Lived Codebase
Published June 12th, 2009 Under Agile, Coding, Software Testing | Leave a Comment
Agile development practices and good Object Oriented Design principles are supposed to enable unending, gentle modification of an existing codebase. Is this really true, though? In the course of 5+ years developing and evolving an open source framework, I’ve learned a lot of painful lessons about the issues that retard code extensions and modifications. I’ve also learned a little bit about the design decisions that dramatically increased my ability to extend the code. In this talk I’ll show several instances of how failing to heed design fundamentals introduced code viscosity, and how some strategic refactorings opened up the flood gates for new functionality.
Undoubtedly, the practice of Test Driven Development directly supports your ability to modify a system, but I found out the hard way that there are also plenty of ways to do it wrong. I’ll share examples of high friction TDD and the changes in strategy I employed to reduce that friction to wring more value out of TDD. The programming languages we use for .Net development have changed dramatically in 5 years. We can apply the new language features in C# 3.0 to improve the readability and structure of both our code and the way that we express unit test specifications. Lastly, I’ll discuss our changing expectations on framework usability and the resulting impact on design.
http://www.infoq.com/presentations/Lessons-Learned-Jeremy-Miller
keep looking »