<?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: 6 Steps To Refactoring Rails (for Mere Mortals)</title>
	<atom:link href="http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 12:12:12 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: cash loans people bad credit</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-54202</link>
		<dc:creator>cash loans people bad credit</dc:creator>
		<pubDate>Thu, 27 Jan 2011 03:38:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-54202</guid>
		<description>My partner and i are generally obtaining a hard time , following on your Rss feed. It comes plan fault 451. Tell me if its a an easy task to resolve error or whether just simply us . Ive experimented with opera and For instance. Im using AVG Firewall program plus i am undecided ways to turn it off . I am not excellent together with Computer systems. Dangerous lesemarke your web site and discover for those who have told the pollsters. take care</description>
		<content:encoded><![CDATA[<p>My partner and i are generally obtaining a hard time , following on your Rss feed. It comes plan fault 451. Tell me if its a an easy task to resolve error or whether just simply us . Ive experimented with opera and For instance. Im using AVG Firewall program plus i am undecided ways to turn it off . I am not excellent together with Computer systems. Dangerous lesemarke your web site and discover for those who have told the pollsters. take care</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Mullany</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-4660</link>
		<dc:creator>Michael Mullany</dc:creator>
		<pubDate>Wed, 01 Jul 2009 23:16:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-4660</guid>
		<description>yomero -- we inavertently broke some safari feeds when we migrated to wordpress a few months ago. if you resubscribe to our feedburner feed you&#039;ll be cool as a cucumber </description>
		<content:encoded><![CDATA[<p>yomero &#8212; we inavertently broke some safari feeds when we migrated to wordpress a few months ago. if you resubscribe to our feedburner feed you&#039;ll be cool as a cucumber</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: yomero</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-4659</link>
		<dc:creator>yomero</dc:creator>
		<pubDate>Wed, 01 Jul 2009 22:05:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-4659</guid>
		<description>What happened to your RSS feeds? </description>
		<content:encoded><![CDATA[<p>What happened to your RSS feeds?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peanut</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-4657</link>
		<dc:creator>peanut</dc:creator>
		<pubDate>Wed, 01 Jul 2009 07:10:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-4657</guid>
		<description>Any of this point not new for me. But anyway, thanks for systematization. </description>
		<content:encoded><![CDATA[<p>Any of this point not new for me. But anyway, thanks for systematization.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: feydr</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-4648</link>
		<dc:creator>feydr</dc:creator>
		<pubDate>Tue, 30 Jun 2009 02:31:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-4648</guid>
		<description>That last point I  can definitely vouch for -- &#039;git reset --hard&#039; has come in spades for a parsing project I am working on. </description>
		<content:encoded><![CDATA[<p>That last point I  can definitely vouch for &#8212; &#039;git reset &#8211;hard&#039; has come in spades for a parsing project I am working on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mislav</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-4644</link>
		<dc:creator>Mislav</dc:creator>
		<pubDate>Mon, 29 Jun 2009 21:25:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-4644</guid>
		<description>Step 7: merge yourself with another master developer to form a superpowered human being named Carlhuda and leave a fire trail on your keyboard while hacking </description>
		<content:encoded><![CDATA[<p>Step 7: merge yourself with another master developer to form a superpowered human being named Carlhuda and leave a fire trail on your keyboard while hacking</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wycats</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-4643</link>
		<dc:creator>wycats</dc:creator>
		<pubDate>Mon, 29 Jun 2009 20:49:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-4643</guid>
		<description>@alan as a matter of fact, I have tried it both ways. It might be possible for a single, very disciplined, excellent programmer to keep a relatively stable codebase without any tests, but even for such a developer, good tests add value. 
 
The rule you&#039;re commenting on actually came directly out of work we did on Merb, as well as an observation about Ruby 1.9. In the case of Merb, our early tests (the 0.3 to 0.5 era) were fairly coupled, and we routinely made refactoring and new-feature changes at the same time. I talked some about the coupling problem at RubyConf last year. 
 
Ruby 1.9 has a similar problem. Because the internals were changed at the same time as language features were added, it&#039;s very difficult to determine whether a breaking change is intentional or not. Had they focused on swapping in a new VM (like JRuby and Rubinius did), it&#039;s trivial to point at a breaking change and *know* it&#039;s accidental. 
 
The work we&#039;re doing on Rails is really just the culmination of a lot of experiences trying different refactoring strategies. Especially when working with members of a team and the open-source community, the quality of the recommendation that refactoring is a separate phase from new features has significant communication benefits that make it worthwhile all on its own. </description>
		<content:encoded><![CDATA[<p>@alan as a matter of fact, I have tried it both ways. It might be possible for a single, very disciplined, excellent programmer to keep a relatively stable codebase without any tests, but even for such a developer, good tests add value. </p>
<p>The rule you&#039;re commenting on actually came directly out of work we did on Merb, as well as an observation about Ruby 1.9. In the case of Merb, our early tests (the 0.3 to 0.5 era) were fairly coupled, and we routinely made refactoring and new-feature changes at the same time. I talked some about the coupling problem at RubyConf last year. </p>
<p>Ruby 1.9 has a similar problem. Because the internals were changed at the same time as language features were added, it&#039;s very difficult to determine whether a breaking change is intentional or not. Had they focused on swapping in a new VM (like JRuby and Rubinius did), it&#039;s trivial to point at a breaking change and *know* it&#039;s accidental. </p>
<p>The work we&#039;re doing on Rails is really just the culmination of a lot of experiences trying different refactoring strategies. Especially when working with members of a team and the open-source community, the quality of the recommendation that refactoring is a separate phase from new features has significant communication benefits that make it worthwhile all on its own.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alan</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-4642</link>
		<dc:creator>Alan</dc:creator>
		<pubDate>Mon, 29 Jun 2009 20:14:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-4642</guid>
		<description>&quot;We&#8217;ve held fast to this requirement for the Rails 3 work Carl and I have been doing, which has resulted in an extremely stable edge, despite making fairly invasive changes.&quot; 
 
Did you try both ways?  If not, how can you derive this causation? 
 
I&#039;ve done very invasive changes, while adding features, without even any automated tests, and maintained stable code.  It was (as everything else in programming) a matter of being careful, not any particular strategy or methodology. </description>
		<content:encoded><![CDATA[<p>&quot;We&rsquo;ve held fast to this requirement for the Rails 3 work Carl and I have been doing, which has resulted in an extremely stable edge, despite making fairly invasive changes.&quot; </p>
<p>Did you try both ways?  If not, how can you derive this causation? </p>
<p>I&#039;ve done very invasive changes, while adding features, without even any automated tests, and maintained stable code.  It was (as everything else in programming) a matter of being careful, not any particular strategy or methodology.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Stillwater</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-4640</link>
		<dc:creator>Stephen Stillwater</dc:creator>
		<pubDate>Mon, 29 Jun 2009 18:58:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-4640</guid>
		<description>Indeed, this article could also be titled &quot;an extremely abridged version of &#039;Refactoring&#039; by Fowler, Beck, et. al&quot;. :P </description>
		<content:encoded><![CDATA[<p>Indeed, this article could also be titled &quot;an extremely abridged version of &#039;Refactoring&#039; by Fowler, Beck, et. al&quot;. :P</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wycats</title>
		<link>http://www.engineyard.com/blog/2009/6-steps-to-refactoring-rails-for-mere-mortals/comment-page-1/#comment-4639</link>
		<dc:creator>wycats</dc:creator>
		<pubDate>Mon, 29 Jun 2009 18:45:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.engineyard.com/blog/?p=1387#comment-4639</guid>
		<description>@jsd what I&#039;ve seen time and time again is that innocent use of a public API in a private context eventually made the public interface far more complex than it needed to be. More importantly, it was not quite difficult to determine whether some functionality in a *public* method was meant to be public, or meant to be internal. 
 
Just to be clear, when I say &quot;public&quot; with regard to Rails, I mean functionality intended to be used by users of the library or framework, not the &quot;public&quot; visibility in Ruby. </description>
		<content:encoded><![CDATA[<p>@jsd what I&#039;ve seen time and time again is that innocent use of a public API in a private context eventually made the public interface far more complex than it needed to be. More importantly, it was not quite difficult to determine whether some functionality in a *public* method was meant to be public, or meant to be internal. </p>
<p>Just to be clear, when I say &quot;public&quot; with regard to Rails, I mean functionality intended to be used by users of the library or framework, not the &quot;public&quot; visibility in Ruby.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

