<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: The Refactor Factor</title>
	<atom:link href="http://adavidchan.com/the-refactor-factor/feed" rel="self" type="application/rss+xml" />
	<link>http://adavidchan.com/the-refactor-factor</link>
	<description>Through the eyes of David Chan</description>
	<lastBuildDate>Wed, 28 Jul 2010 08:11:13 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: dudevu Downloader</title>
		<link>http://adavidchan.com/the-refactor-factor/comment-page-1#comment-1072</link>
		<dc:creator>dudevu Downloader</dc:creator>
		<pubDate>Fri, 11 Jun 2010 07:23:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dekandustry.com/2007/03/26/the-refactor-factor/#comment-1072</guid>
		<description>Divide movies to several clips</description>
		<content:encoded><![CDATA[<p>Divide movies to several clips</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Allen K.</title>
		<link>http://adavidchan.com/the-refactor-factor/comment-page-1#comment-3</link>
		<dc:creator>Allen K.</dc:creator>
		<pubDate>Wed, 28 Mar 2007 21:53:34 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dekandustry.com/2007/03/26/the-refactor-factor/#comment-3</guid>
		<description>In an ideal world, there would be no need for refactoring. As Zach stated, things should be done right the first time, and not simply put off until some later phase. This I completely agree with. Refactoring is not the solution to writing bad code. This is in no way what refactoring was meant to solve. Refactoring is meant to counteract the inevitable &#039;software entropy&#039; that all long-term projects face. Any code base should be reviewed to ensure that it is wise to refactor it before moving on.

There are numerous reasons why a codebase would be in a state where it requires refactoring. Perhaps the schedule for a project was slipping and corners had to be cut in order to ship a product, or what was once considered good, clean code no longer satisfies the new requirements. Or the developer was just hung over from a long night of drinking and playing World of Warcraft and just wrote sloppy code the next day. Also, No two developers are the same, and even the same developer last year is not the same as he is now. I myself have looked over old code, said &quot;Who the hell wrote this crap?&quot; only to find out later that it was actually me.

Whatever the case, there are numerous benefits to refactoring. It allows the developers to solidify the code base, clean up inconsistencies, and improve the overall quality of the product without affecting the user output. When done correctly, the end result is a code base that can save time, energy, and debugging headaches in the future. It should be able to support the addition of new features quickly and easily (improved extensibility and scalability), and reduce the amount of maintenance work required.  

Another analogy you can use for refactoring (or software development in general) is Gardening. Over time, despite how well you grow your plants and arrange them into neat patterns, you eventually grow weeds. If you don&#039;t stop and pull out these weeds, they will eventually spread and overwhelm your entire garden. The same holds true with any software development project that needs to be refactored.</description>
		<content:encoded><![CDATA[<p>In an ideal world, there would be no need for refactoring. As Zach stated, things should be done right the first time, and not simply put off until some later phase. This I completely agree with. Refactoring is not the solution to writing bad code. This is in no way what refactoring was meant to solve. Refactoring is meant to counteract the inevitable &#8217;software entropy&#8217; that all long-term projects face. Any code base should be reviewed to ensure that it is wise to refactor it before moving on.</p>
<p>There are numerous reasons why a codebase would be in a state where it requires refactoring. Perhaps the schedule for a project was slipping and corners had to be cut in order to ship a product, or what was once considered good, clean code no longer satisfies the new requirements. Or the developer was just hung over from a long night of drinking and playing World of Warcraft and just wrote sloppy code the next day. Also, No two developers are the same, and even the same developer last year is not the same as he is now. I myself have looked over old code, said &#8220;Who the hell wrote this crap?&#8221; only to find out later that it was actually me.</p>
<p>Whatever the case, there are numerous benefits to refactoring. It allows the developers to solidify the code base, clean up inconsistencies, and improve the overall quality of the product without affecting the user output. When done correctly, the end result is a code base that can save time, energy, and debugging headaches in the future. It should be able to support the addition of new features quickly and easily (improved extensibility and scalability), and reduce the amount of maintenance work required.  </p>
<p>Another analogy you can use for refactoring (or software development in general) is Gardening. Over time, despite how well you grow your plants and arrange them into neat patterns, you eventually grow weeds. If you don&#8217;t stop and pull out these weeds, they will eventually spread and overwhelm your entire garden. The same holds true with any software development project that needs to be refactored.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zach Lawrence</title>
		<link>http://adavidchan.com/the-refactor-factor/comment-page-1#comment-2</link>
		<dc:creator>Zach Lawrence</dc:creator>
		<pubDate>Wed, 28 Mar 2007 19:57:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dekandustry.com/2007/03/26/the-refactor-factor/#comment-2</guid>
		<description>I agree that from time to time, code should be refactored, especially at the core component level. As stated, most timelines for projects are far shorter than proper coding practices can be implemented. However, at the same time, some care should really be taken in providing proper habits (I prefer not to use the term &quot;Best practices&quot;, as history has dictated that &quot;Best Practices&quot; are fluid in nature and have a habit of changing, at minimum, monthly). 

Refactoring should not be relied on for proper coding methodology, but rather as a &quot;TODO&quot; item for the long term. What is often seen is that a developer will race through the code without having developed proper planning for objects and sequence/state diagrams (I am completely guilty of this, as are many people who say they aren&#039;t), which ends up with poor/obsolete code right at first release (Beta as this article indicates), with the thought that &quot;Oh. It&#039;ll be fixed up in the refactoring cycle&quot;. 

What should happen is that the developer should develop and implement some of the primary habits (&quot;Best Practices&quot;) of designing their objects first, figuring out what has what, what state delegates which method and so on. Once this has been worked out, then start coding with the idea that &quot;This is it!&quot;, and write the most elegant and effecient code they can for the objects/processes. If these criteria are met first, then the developer can be justified down the road in saying that &quot;Hey. I&#039;ve found a better way to do this, let&#039;s refactor it.&quot;, and then place it in the refactoring cycle.

To have a cycle in which all it is is refactoring of old code, simply means that it wasn&#039;t really done properly the first time, and certainly shouldn&#039;t have gone out the way it was. This may seem like timelines won&#039;t be met, but in my experience, proper planning, research and habits up front will make the actual implementation go that much faster, produce better results, and reduce the need for refactoring.

...of course, I may also be just talking out of my a@#....</description>
		<content:encoded><![CDATA[<p>I agree that from time to time, code should be refactored, especially at the core component level. As stated, most timelines for projects are far shorter than proper coding practices can be implemented. However, at the same time, some care should really be taken in providing proper habits (I prefer not to use the term &#8220;Best practices&#8221;, as history has dictated that &#8220;Best Practices&#8221; are fluid in nature and have a habit of changing, at minimum, monthly). </p>
<p>Refactoring should not be relied on for proper coding methodology, but rather as a &#8220;TODO&#8221; item for the long term. What is often seen is that a developer will race through the code without having developed proper planning for objects and sequence/state diagrams (I am completely guilty of this, as are many people who say they aren&#8217;t), which ends up with poor/obsolete code right at first release (Beta as this article indicates), with the thought that &#8220;Oh. It&#8217;ll be fixed up in the refactoring cycle&#8221;. </p>
<p>What should happen is that the developer should develop and implement some of the primary habits (&#8221;Best Practices&#8221;) of designing their objects first, figuring out what has what, what state delegates which method and so on. Once this has been worked out, then start coding with the idea that &#8220;This is it!&#8221;, and write the most elegant and effecient code they can for the objects/processes. If these criteria are met first, then the developer can be justified down the road in saying that &#8220;Hey. I&#8217;ve found a better way to do this, let&#8217;s refactor it.&#8221;, and then place it in the refactoring cycle.</p>
<p>To have a cycle in which all it is is refactoring of old code, simply means that it wasn&#8217;t really done properly the first time, and certainly shouldn&#8217;t have gone out the way it was. This may seem like timelines won&#8217;t be met, but in my experience, proper planning, research and habits up front will make the actual implementation go that much faster, produce better results, and reduce the need for refactoring.</p>
<p>&#8230;of course, I may also be just talking out of my a@#&#8230;.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
