<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Refactoring to Patterns</title><link>http://davidhayden.com/blog/dave/category/35.aspx</link><description>Refactoring to Patterns</description><managingEditor>Dave Hayden</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.101</generator><item><dc:creator>Dave Hayden</dc:creator><title>Missing ReSharper Feature - Refactor to Design Pattern</title><link>http://davidhayden.com/blog/dave/archive/2007/09/21/MissingReSharperFeatureRefactorDesignPattern.aspx</link><pubDate>Fri, 21 Sep 2007 13:55:00 GMT</pubDate><guid>http://davidhayden.com/blog/dave/archive/2007/09/21/MissingReSharperFeatureRefactorDesignPattern.aspx</guid><description>&lt;H1&gt;&lt;FONT face=Verdana&gt;Missing ReSharper Feature - Refactor to Design Pattern&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;by &lt;/FONT&gt;&lt;A href="http://www.davidhayden.com/"&gt;&lt;FONT face=Verdana size=2&gt;David Hayden&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; ( &lt;/FONT&gt;&lt;A href="http://www.davidhayden.com/"&gt;&lt;FONT face=Verdana size=2&gt;Microsoft MVP C#&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; )&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Last night I needed to refactor some conditional logic to a particular strategy. Already having gone through roughly the same set of refactoring steps to do this in another section of the application, I thought to myself - &amp;#8220;Why doesn't ReSharper have an option to refactor code to a particular design pattern?&amp;#8221;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;In particular, I think refactoring to the strategy pattern is a fairly easy refactoring that could be done by ReSharper. One of my favorite books, &lt;/FONT&gt;&lt;A href="http://davidhayden.com/blog/dave/archive/2004/12/19/713.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Refactoring to Patterns&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; by Joshua Kerievsky, is a really nice catalog of refactorings explaining step-by-step how you could achieve various refactorings to patterns.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Obviously it is important to understand the refactoring steps without a tool. You don't want to get yourself into tool dependency. But, certainly the option of having ReSharper apply several refactorings for you to a particular design pattern is a very productive thing. You always have the option of applying the steps yourself in case you feel yourself getting a little rusty :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://davidhayden.com/blog/dave/aggbug/3336.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dave Hayden</dc:creator><title>Refactoring Webcast - Refactoring For Your Code Base - Excellent Introduction to Refactoring</title><link>http://davidhayden.com/blog/dave/archive/2005/05/28/1061.aspx</link><pubDate>Sat, 28 May 2005 11:34:00 GMT</pubDate><guid>http://davidhayden.com/blog/dave/archive/2005/05/28/1061.aspx</guid><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Last night I watched an MSDN Webcast, called &lt;/FONT&gt;&lt;A href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032273125&amp;amp;EventCategory=5&amp;amp;culture=en-US&amp;amp;CountryCode=US" target=_blank&gt;&lt;FONT face=Verdana size=2&gt;Refactoring For Your Code Base&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; (Level 300).&amp;nbsp; &lt;/FONT&gt;&lt;A href="http://www.agileprogrammer.com/oneagilecoder/" target=_blank&gt;&lt;FONT face=Verdana size=2&gt;Brian Button&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; was the presenter, and let me say that he did an excellent job presenting the material.&amp;nbsp; The&amp;nbsp;presentation was a very nice balance of slides and refactorings demonstrated in Visual Studio.&amp;nbsp;&amp;nbsp;The demonstrations were very easy to follow and the webcast is a fantastic introduction to refactoring.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;His first demonstration showed the &amp;#8220;Rename&amp;#8221; and &amp;#8220;Extract Method&amp;#8221; refactorings.&amp;nbsp; Briefly, he&amp;nbsp;demonstrated how a tool like &lt;/FONT&gt;&lt;A href="http://www.jetbrains.com/resharper/" target=_blank&gt;&lt;FONT face=Verdana size=2&gt;JetBrains ReSharper&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; could help you with such refactorings.&amp;nbsp; However, Brian wasn't pushing or recommending any tools, he just wanted to introduce the fact that there are tools available and that Visual Studio 2005 would also have some refactoring capabilities as well.&amp;nbsp; Nicely done, Brian, as I would have recommended that&amp;nbsp;all C# developers run, not walk, and buy ReSharper.&amp;nbsp; You're a better man!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;His other demonstrations showed a number of other refactorings, like &amp;#8220;Extract Superclass&amp;#8221;, &amp;#8220;Pull Up Constructor Body&amp;#8221;, &amp;#8220;Pull Up Field&amp;#8221;, etc.&amp;nbsp; Again, it was really easy to follow the refactorings and they were all done by hand to show the refactoring process and not demonstrate a tool.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;As you would expect, refactoring was done in very small steps and Brian had a set of unit tests pre-written to demonstrate the importance of unit tests when refactoring.&amp;nbsp; Brian didn't dive into the tests and how to create them, which in my opinion was a smart move.&amp;nbsp; He just reinforced from time-to-time the value of the unit tests as a safety net when doing the refactorings.&amp;nbsp; He also ran the unit tests after every small change / refactoring which supported his words, yet was not a distraction during the webcast.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;He recommended a few books for additional reading:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0201485672/ref=pd_sim_b_5/102-3168471-1819314?%5Fencoding=UTF8&amp;amp;v=glance" target=_blank&gt;&lt;FONT face=Verdana size=2&gt;Refactoring: Improving the Design of Existing Code&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; by Martin Fowler&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0321213351/ref=pd_bxgy_text_1/102-3168471-1819314?v=glance&amp;amp;s=books&amp;amp;st=*" target=_blank&gt;&lt;FONT face=Verdana size=2&gt;Refactoring to Patterns&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; by Joshua Kerievsky&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0131177052/ref=pd_null_recs_b_t/102-3168471-1819314?v=glance" target=_blank&gt;&lt;FONT face=Verdana size=2&gt;Working Effectively with Legacy Code&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;&amp;nbsp;by Michael Feathers&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;He also recommended the Refactoring.com website, which is basically the main place to go for refactoring information.&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.refactoring.com/" target=_blank&gt;&lt;FONT face=Verdana size=2&gt;Refactoring.com&lt;/FONT&gt;&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;If you are looking for a great introduction to refactoring, I highly recommend the webcast.&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://davidhayden.com/blog/dave/aggbug/1061.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dave Hayden</dc:creator><title>Refactor! for Visual Basic 2005 Beta 2 - Refactoring Tools for Visual Basic 2005 .NET</title><link>http://davidhayden.com/blog/dave/archive/2005/04/21/978.aspx</link><pubDate>Thu, 21 Apr 2005 16:07:00 GMT</pubDate><guid>http://davidhayden.com/blog/dave/archive/2005/04/21/978.aspx</guid><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Good news for Visual Basic developers - Visual Basic 2005 will come with the Refactor! Community Edition by Developer Express.&amp;nbsp; Visual&amp;nbsp; C# has quite a bit of refactoring built-in, so this isn't really a huge priority for Visual C# developers.&amp;nbsp; I will be using &lt;A href="http://davidhayden.com/blog/dave/archive/2005/01/19/784.aspx"&gt;JetBrain's ReSharper&lt;/A&gt; anyway, so I could really care less if Visual C# 2005 had refactoring or not :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;FIELDSET&gt;&lt;LEGEND&gt;Visual Basic 2005 Refactoring&lt;/LEGEND&gt;&lt;FONT face=Verdana size=2&gt;Refactor! for Visual Basic 2005 Beta 2 &lt;/FONT&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Refactor! for Visual Basic 2005 Beta 2 is a free plug-in from Developer Express Inc. that enables Visual Basic developers to simplify and re-structure source code, making it easier to read and less costly to maintain. Refactor! supports more than 15 individual refactoring features, including operations like Reorder Parameters, Extract Method, Encapsulate Field and Create Overload.&lt;/FONT&gt;&lt;/P&gt;&lt;/FIELDSET&gt;&lt;FONT face=Verdana size=2&gt; &lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;More and more developers are recognizing that simple, easy-to-read code is the key to application flexibility and easy maintenance. Managers are realizing that easy maintenance means low cost maintenance. If you know in your heart that parts of your code base could be better, but uncertainty about maintenance cost or concerns over breaking code have kept you from cleaning up your house, then &lt;B&gt;Refactor!&lt;/B&gt; is for you. Refactor vaporizes barriers to code simplification, dramatically reducing the cost traditionally associated with improving, simplifying, and refactoring existing code. &lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;To perform an extract method, just select the block of code you want to extract, and press the Refactor Key. &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;To reorder parameters, place the cursor on the type of the parameter and press the Refactor Key. &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;To create a method overload, place the cursor at the start of the method declaration and press the Refactor Key. &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;To reverse a conditional or replace a nested conditional with a guard clause, place the cursor on the "if" keyword and press the Refactor Key.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;No other code simplification and refactoring tool is able to provide so much functionality with just one key. Refactor is the only refactoring and code simplification tool with one-key refactoring. [&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vbasic/downloads/2005/tools/refactor/" target=_blank&gt;&lt;FONT face=Verdana size=2&gt;Microsoft&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;A couple of posts on refactoring:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A id=viewpost.ascx_TitleUrl href="/blog/dave/archive/2004/12/21/724.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Refactoring to Patterns - Benefits and Motivation for Refactoring&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;A id=viewpost.ascx_TitleUrl href="/blog/dave/archive/2004/12/09/675.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Refactoring - Code Smells - Refactoring Patterns - Object Design - Somewhat Like Database Normalization&lt;/FONT&gt;&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&lt;img src ="http://davidhayden.com/blog/dave/aggbug/978.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dave Hayden</dc:creator><title>Refactoring to Patterns - Benefits and Motivation for Refactoring</title><link>http://davidhayden.com/blog/dave/archive/2004/12/21/724.aspx</link><pubDate>Tue, 21 Dec 2004 23:40:00 GMT</pubDate><guid>http://davidhayden.com/blog/dave/archive/2004/12/21/724.aspx</guid><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The second chapter of &lt;/FONT&gt;&lt;A href="http://davidhayden.com/blog/dave/archive/2004/12/19/716.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Refactoring to Patterns&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; has a short introduction to Refactoring.&amp;nbsp; I already&amp;nbsp;posted a short &lt;/FONT&gt;&lt;A href="http://davidhayden.com/blog/dave/archive/2004/12/09/675.aspx"&gt;&lt;FONT face=Verdana size=2&gt;introduction to refactoring&amp;nbsp;from Applying UML and Patterns&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The book describes&amp;nbsp;3 main&amp;nbsp;motivations for&amp;nbsp;refactoring:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Make it easier to add new code&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Improve the design of existing code&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Gain a better understanding of code&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;One of the goals of refactoring is to produce human-readable code.&amp;nbsp; If you find yourself writing a lot of comments within your code to explain what it does, you may want to spend time refactoring the code so it is understandable on its own.&amp;nbsp; Martin Fowler said it best:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&amp;#8220;Any fool can write code that a computer can understand. Good programmers write code that humans can understand.&amp;#8221;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The key to refactoring is that you basically refactor &lt;U&gt;as&lt;/U&gt; you code and that you refactor in small steps.&amp;nbsp; If you keep putting off refactoring, you end up getting &lt;STRONG&gt;design debt&lt;/STRONG&gt; (code smells) that will probably never go away, because it is difficult to justify to the boss to spend 2 - 3 weeks worth of refactoring after the fact.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;You refactor in small steps so you don't end up adding defects into the system that may take you hours to untangle.&amp;nbsp; After each refactoring you re-run your unit tests to verify your refactoring did not cause a defect in the system.&amp;nbsp; You then continue the cycle of refactoring and re-running unit tests until you have eliminated the code smells.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;There you have it -&amp;nbsp;a short introduction :)&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://davidhayden.com/blog/dave/aggbug/724.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dave Hayden</dc:creator><title>Refactoring to Patterns - Thoughts on Test-Driven Development and Design Patterns and Extreme Programming</title><link>http://davidhayden.com/blog/dave/archive/2004/12/19/716.aspx</link><pubDate>Sun, 19 Dec 2004 12:04:00 GMT</pubDate><guid>http://davidhayden.com/blog/dave/archive/2004/12/19/716.aspx</guid><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Joshua Kerievsky, the author of &lt;STRONG&gt;Refactoring to Patterns&lt;/STRONG&gt;, appears to be a&amp;nbsp;practitioner of &lt;A href="http://davidhayden.com/blog/dave/archive/2004/12/03/662.aspx"&gt;Extreme Programming&lt;/A&gt;.&amp;nbsp; In the first chapter of &lt;A href="http://davidhayden.com/blog/dave/archive/2004/12/19/713.aspx"&gt;Refactoring to Patterns&lt;/A&gt;, &lt;EM&gt;Why I Wrote This Book&lt;/EM&gt;, Joshua talks a lot about how &lt;A href="http://davidhayden.com/blog/dave/archive/2004/06/15/309.aspx"&gt;test-driven development&lt;/A&gt;, &lt;A href="http://davidhayden.com/blog/dave/archive/2004/12/09/675.aspx"&gt;refactoring&lt;/A&gt;, and&amp;nbsp;&lt;A href="http://davidhayden.com/blog/dave/archive/2004/11/16/627.aspx"&gt;iterative development&lt;/A&gt;&amp;nbsp;have impacted not only the way he develops applications, but also&amp;nbsp;looks at &lt;A href="http://davidhayden.com/blog/dave/archive/2004/05/18/258.aspx"&gt;design patterns&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Design patterns are typically thought about upfront when designing an application in &lt;STRONG&gt;anticipation&lt;/STRONG&gt; of problems.&amp;nbsp; You immediately start applying design patterns based on unknown requirements to make the system as flexible as possible.&amp;nbsp; In some cases, you are essentially applying a sledgehammer to a problem that may only require a few small taps by a regular hammer.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Instead of thinking about design patterns as solutions to anticipated problems ( initial design ), design patterns are more richly understood during the refactoring process as solutions to problems that occur during the course of refactoring.&amp;nbsp; Design&amp;nbsp;patterns are solutions to problems as they occur, not solutions to problems we think may occur!&amp;nbsp; Excellent point, Joshua.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Two sentences really stood out in the chapter about evolutionary design that deserve a highlight:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&amp;#8220;To date, our software design literature has focused more on teaching great solutions than on teaching evolutions to great solutions.&amp;#8221;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Hmm....&amp;nbsp; It's a great point.&amp;nbsp; The value in seeing a great solution is not so much in the solution itself, but the wealth of knowledge often lost in how the architects and developers arrived at the great solution.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&amp;#8220;If you want to get the most out of patterns, you must ...&amp;nbsp; See patterns in the context of refactoring, not just as reusable elements that exist apart from refactoring.&amp;#8221;&amp;nbsp; This is where the book Refactoring to Patterns comes in to play.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Yep, I am excited about this book!&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://davidhayden.com/blog/dave/aggbug/716.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dave Hayden</dc:creator><title>Refactoring to Patterns and Effective C# .NET Development Books for Christmas</title><link>http://davidhayden.com/blog/dave/archive/2004/12/19/713.aspx</link><pubDate>Sun, 19 Dec 2004 11:06:00 GMT</pubDate><guid>http://davidhayden.com/blog/dave/archive/2004/12/19/713.aspx</guid><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;My wife gave me two new books for Christmas:&lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href="http://davidhayden.com/blog/dave/category/35.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Refactoring to Patterns&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; by Joshua Kerievsky&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Effective C#, 50 Specific Ways to Improve Your C# by Bill Wagner&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;She gave them to me early because I&amp;nbsp;have been looking around for a new book to replace the recently&amp;nbsp;finished &lt;/FONT&gt;&lt;A href="http://davidhayden.com/blog/dave/category/33.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Applying UML and Patterns by Craig Larman&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;By coincidence, I mentioned&amp;nbsp;&lt;STRONG&gt;Refactoring to Patterns&lt;/STRONG&gt; in a recent post: &lt;/FONT&gt;&lt;A href="http://davidhayden.com/blog/dave/archive/2004/12/09/675.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Refactoring&amp;nbsp;- Code Smells - Refactoring Patterns&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;.&amp;nbsp; Refactoring to Patterns seems well recommended in the development community along with &lt;STRONG&gt;Refactoring: Improving the Design of Existing Code&lt;/STRONG&gt; by Martin Fowler.&amp;nbsp; I have not read the Fowler book, but it doesn't seem to be a prerequisite, more of a nice to have :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I&amp;nbsp;have read the first&amp;nbsp;7 (of 50) items&amp;nbsp;of &lt;STRONG&gt;Effective C#&lt;/STRONG&gt; by Bill Wagner and it is a fun read.&amp;nbsp; The presentation of the ideas are short, to the point, and very useful.&amp;nbsp; I love these kinds of books, because they give you real-world information that often must come from experience and is rarely mentioned in blogs and&amp;nbsp;almost never&amp;nbsp;found in examples and tutorials.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I will talk more about these books in subsequent posts as I read them further.&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://davidhayden.com/blog/dave/aggbug/713.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>