<?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"
	>
<channel>
	<title>Comments on: Going Fast, Frankenstein, and Refactoring</title>
	<atom:link href="http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/feed/" rel="self" type="application/rss+xml" />
	<link>http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/</link>
	<description>Isaac Schlueter on Web Development</description>
	<pubDate>Thu, 24 Jul 2008 02:34:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Isaac</title>
		<link>http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-350</link>
		<dc:creator>Isaac</dc:creator>
		<pubDate>Wed, 30 Jan 2008 19:48:02 +0000</pubDate>
		<guid isPermaLink="false">http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-350</guid>
		<description>@Thom

&lt;blockquote&gt;Do you think there are major pitfalls I'm going to walk into with this?&lt;/blockquote&gt;

Depends.  ;)  Here's what I've found, and what I've learned from developers with way more experience than I have:

&lt;ol&gt;&lt;li&gt;If your implementation details are complicated enough to need comments, then they may need to be better abstracted.&lt;/li&gt;&lt;li&gt;If the implementation details change (which is the norm) then the comments usually don't, which leads to comments that lie.&lt;/li&gt;&lt;/ol&gt;

Better to over-comment than under-comment, especially when you're dealing with the often-hostile world of web development.  But comments should always be more-or-less unchanging, and reflect the "why" rather than the "what."  Of course, a valid "why" might be something like &lt;q&gt;Need to set zoom:1 here to make IE 6 stop being an idiot&lt;/q&gt;; while technically that's an implementation choice, it's also a description of the landscape and the reasoning behind the choice, which is unlikely to change any time soon.

If there's a particularly tricky implementation, and no way to abstract it out, which is common, since &lt;a href="/2007/10/top-5-css-mistakes/" rel="nofollow"&gt;CSS has a seriously flawed abstraction model&lt;/a&gt;, then you're kind of screwed.  You can reduce the impact by writing a blog post about the issue and include the URL in the comments.  (This also adds to community knowledge, which is good for everyone in the long run.)

Like I said, I write a lot of implementation details in my comments while I'm writing code, to the point of writing mostly-complete pseudocode for each method as I'm stubbing them out.  But that stuff turns into clutter as soon as the method is working, and it's a lot easier to manage when the scaffolding is removed.</description>
		<content:encoded><![CDATA[<p>@Thom</p>
<blockquote><p>Do you think there are major pitfalls I&#8217;m going to walk into with this?</p></blockquote>
<p>Depends.  <img src='http://foohack.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Here&#8217;s what I&#8217;ve found, and what I&#8217;ve learned from developers with way more experience than I have:</p>
<ol>
<li>If your implementation details are complicated enough to need comments, then they may need to be better abstracted.</li>
<li>If the implementation details change (which is the norm) then the comments usually don&#8217;t, which leads to comments that lie.</li>
</ol>
<p>Better to over-comment than under-comment, especially when you&#8217;re dealing with the often-hostile world of web development.  But comments should always be more-or-less unchanging, and reflect the &#8220;why&#8221; rather than the &#8220;what.&#8221;  Of course, a valid &#8220;why&#8221; might be something like <q>Need to set zoom:1 here to make IE 6 stop being an idiot</q>; while technically that&#8217;s an implementation choice, it&#8217;s also a description of the landscape and the reasoning behind the choice, which is unlikely to change any time soon.</p>
<p>If there&#8217;s a particularly tricky implementation, and no way to abstract it out, which is common, since <a href="/2007/10/top-5-css-mistakes/" rel="nofollow" class="internal">CSS has a seriously flawed abstraction model</a>, then you&#8217;re kind of screwed.  You can reduce the impact by writing a blog post about the issue and include the URL in the comments.  (This also adds to community knowledge, which is good for everyone in the long run.)</p>
<p>Like I said, I write a lot of implementation details in my comments while I&#8217;m writing code, to the point of writing mostly-complete pseudocode for each method as I&#8217;m stubbing them out.  But that stuff turns into clutter as soon as the method is working, and it&#8217;s a lot easier to manage when the scaffolding is removed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thom Blake</title>
		<link>http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-349</link>
		<dc:creator>Thom Blake</dc:creator>
		<pubDate>Wed, 30 Jan 2008 18:17:15 +0000</pubDate>
		<guid isPermaLink="false">http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-349</guid>
		<description>I'm a big fan of over-commenting my code.  If it's a project I work on alone and with long breaks, even comments related to the implementation are really useful to figuring out how a complicated bit of logic works months after I've written it.  Do you think there are major pitfalls I'm going to walk into with this?</description>
		<content:encoded><![CDATA[<p>I&#8217;m a big fan of over-commenting my code.  If it&#8217;s a project I work on alone and with long breaks, even comments related to the implementation are really useful to figuring out how a complicated bit of logic works months after I&#8217;ve written it.  Do you think there are major pitfalls I&#8217;m going to walk into with this?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Powdered Non Sequitur Man &#187; Blog Archive &#187; The Latest Awesomeness</title>
		<link>http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-312</link>
		<dc:creator>Powdered Non Sequitur Man &#187; Blog Archive &#187; The Latest Awesomeness</dc:creator>
		<pubDate>Wed, 23 Jan 2008 01:58:53 +0000</pubDate>
		<guid isPermaLink="false">http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-312</guid>
		<description>[...] blog post comparing software development to animating Frankenstein&#8217;s monster, which contains this choice quote: Software development is a lot like building Frankenstien’s [...]</description>
		<content:encoded><![CDATA[<p>[...] blog post comparing software development to animating Frankenstein&#8217;s monster, which contains this choice quote: Software development is a lot like building Frankenstien’s [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan Ginstrom</title>
		<link>http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-311</link>
		<dc:creator>Ryan Ginstrom</dc:creator>
		<pubDate>Tue, 22 Jan 2008 09:21:52 +0000</pubDate>
		<guid isPermaLink="false">http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-311</guid>
		<description>Great article. For refactoring existing code bases, I can recommend Michael Feather's "Working Effectively with Legacy Code." It's allowed me to clean up some messes that I would have just chucked out in the past.</description>
		<content:encoded><![CDATA[<p>Great article. For refactoring existing code bases, I can recommend Michael Feather&#8217;s &#8220;Working Effectively with Legacy Code.&#8221; It&#8217;s allowed me to clean up some messes that I would have just chucked out in the past.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Binary Code &#187; Live Fast, Write Code</title>
		<link>http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-305</link>
		<dc:creator>Binary Code &#187; Live Fast, Write Code</dc:creator>
		<pubDate>Mon, 21 Jan 2008 19:50:52 +0000</pubDate>
		<guid isPermaLink="false">http://foohack.com/2008/01/going-fast-frankenstein-and-refactoring/#comment-305</guid>
		<description>[...] Isaac Schlueter, &#8220;Going Fast, Frankenstein, and Refactoring&#8221;   I’ve heard it said that the difference between a good programmer and a bad programmer is that a [...]</description>
		<content:encoded><![CDATA[<p>[...] Isaac Schlueter, &#8220;Going Fast, Frankenstein, and Refactoring&#8221;   I’ve heard it said that the difference between a good programmer and a bad programmer is that a [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
