<?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: When refactoring is no use	</title>
	<atom:link href="http://matteo.vaccari.name/blog/archives/471/feed" rel="self" type="application/rss+xml" />
	<link>http://matteo.vaccari.name/blog/archives/471</link>
	<description>Extreme enthusiasm</description>
	<lastBuildDate>
	Mon, 25 Feb 2019 15:18:16 +0000	</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.1.1</generator>
			<item>
				<title>
				By: matteo				</title>
				<link>http://matteo.vaccari.name/blog/archives/471/comment-page-1#comment-93613</link>
		<dc:creator><![CDATA[matteo]]></dc:creator>
		<pubDate>Sat, 13 Nov 2010 13:18:18 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=471#comment-93613</guid>
					<description><![CDATA[@Franco: I would not call it a complete failure.  We still were able to reuse all of the lower level pieces that were built with TDD and had the responsibility of displaying various bits of information.  It was the high-level design that was lacking.  It was the first TDD project for that team.  

I would say it was partially successful, and I took a few days more of training-on-the-job to turn it into a success.  :-)]]></description>
		<content:encoded><![CDATA[<p>@Franco: I would not call it a complete failure.  We still were able to reuse all of the lower level pieces that were built with TDD and had the responsibility of displaying various bits of information.  It was the high-level design that was lacking.  It was the first TDD project for that team.  </p>
<p>I would say it was partially successful, and I took a few days more of training-on-the-job to turn it into a success.  :-)</p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: Extreme Enthusiasm » Blog Archive » When refactoring is no use &#171; ZenAndSoftwareDevelopment				</title>
				<link>http://matteo.vaccari.name/blog/archives/471/comment-page-1#comment-93602</link>
		<dc:creator><![CDATA[Extreme Enthusiasm » Blog Archive » When refactoring is no use &#171; ZenAndSoftwareDevelopment]]></dc:creator>
		<pubDate>Wed, 10 Nov 2010 14:24:29 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=471#comment-93602</guid>
					<description><![CDATA[[...] Extreme Enthusiasm » Blog Archive » When refactoring is no use.      Pagine [...]]]></description>
		<content:encoded><![CDATA[<p>[&#8230;] Extreme Enthusiasm » Blog Archive » When refactoring is no use.      Pagine [&#8230;]</p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: matteo				</title>
				<link>http://matteo.vaccari.name/blog/archives/471/comment-page-1#comment-93600</link>
		<dc:creator><![CDATA[matteo]]></dc:creator>
		<pubDate>Mon, 08 Nov 2010 20:26:41 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=471#comment-93600</guid>
					<description><![CDATA[Hi Mikalai,

Thank you for your comment.

It&#039;s difficult to reason here about which is the best way to solve a coding problem, as I don&#039;t have an example of your style of Swing coding, and I can&#039;t show you my customer&#039;s code.  

I agree that whiteboard design sessions are important, in fact that&#039;s what we did in our case.  I agree that knowing patterns like MVC and others is important.  But I also think that it&#039;s better not to start with a preconceived idea like &quot;it&#039;s a Swing app so I will apply MVC&quot;.  It might work well without MVC.  It&#039;s better to let MVC emerge from the design session, if indeed it&#039;s needed.]]></description>
		<content:encoded><![CDATA[<p>Hi Mikalai,</p>
<p>Thank you for your comment.</p>
<p>It&#8217;s difficult to reason here about which is the best way to solve a coding problem, as I don&#8217;t have an example of your style of Swing coding, and I can&#8217;t show you my customer&#8217;s code.  </p>
<p>I agree that whiteboard design sessions are important, in fact that&#8217;s what we did in our case.  I agree that knowing patterns like MVC and others is important.  But I also think that it&#8217;s better not to start with a preconceived idea like &#8220;it&#8217;s a Swing app so I will apply MVC&#8221;.  It might work well without MVC.  It&#8217;s better to let MVC emerge from the design session, if indeed it&#8217;s needed.</p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: Mikalai Alimenkou				</title>
				<link>http://matteo.vaccari.name/blog/archives/471/comment-page-1#comment-93599</link>
		<dc:creator><![CDATA[Mikalai Alimenkou]]></dc:creator>
		<pubDate>Mon, 08 Nov 2010 20:02:01 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=471#comment-93599</guid>
					<description><![CDATA[At first, I want to note, that it is very strange not to use MVC pattern with pure MVC framework like Swing. It is hard to identify what was the root of your problems, may be you don&#039;t have any other layers in your application and have all business logic inside controllers, may be you don&#039;t use other UI design patterns like Mediator, Observer, etc. But it definitely not MVC itself. From my experience all elements of the MVC with Swing should be as thin as possible, delegating all logic to other layers. In this case they are easy to test with both unit and funtional tests.

At second, I agree with previous comment. TDD a great tool for “tactic” design, not for the “strategic” one. TDD has little impact on overall architecture, much more on low level design decisions. But it is again strange to me why you ignored the pain of testing your large controllers and didn&#039;t do something to reduce it. TDD doesn&#039;t solve problems (you fix them yourself), it makes them visible.

At last, I want to add some words about refactoring. It is rarely possible to fix architectural problems with basic refactoring practices like method and class extraction. They are used to improve local design, not the whole approach. Design meetings are the best tool to improve application design and architecture. After decisions are made you also apply refactoring (I hope :) you will not rewrite application from scratch), but this is another type of refactoring. It is refactoring to patterns, refactoring to new design solution. This refactoring is also based on small simple steps, but the goal is different - apply new better solution. There is great book on this theme: &quot;Refactoring to Patterns&quot; from Joshua Kerievsky.       

In any case I&#039;m happy for you, because you identified issues early and avoid large problems in future.]]></description>
		<content:encoded><![CDATA[<p>At first, I want to note, that it is very strange not to use MVC pattern with pure MVC framework like Swing. It is hard to identify what was the root of your problems, may be you don&#8217;t have any other layers in your application and have all business logic inside controllers, may be you don&#8217;t use other UI design patterns like Mediator, Observer, etc. But it definitely not MVC itself. From my experience all elements of the MVC with Swing should be as thin as possible, delegating all logic to other layers. In this case they are easy to test with both unit and funtional tests.</p>
<p>At second, I agree with previous comment. TDD a great tool for “tactic” design, not for the “strategic” one. TDD has little impact on overall architecture, much more on low level design decisions. But it is again strange to me why you ignored the pain of testing your large controllers and didn&#8217;t do something to reduce it. TDD doesn&#8217;t solve problems (you fix them yourself), it makes them visible.</p>
<p>At last, I want to add some words about refactoring. It is rarely possible to fix architectural problems with basic refactoring practices like method and class extraction. They are used to improve local design, not the whole approach. Design meetings are the best tool to improve application design and architecture. After decisions are made you also apply refactoring (I hope :) you will not rewrite application from scratch), but this is another type of refactoring. It is refactoring to patterns, refactoring to new design solution. This refactoring is also based on small simple steps, but the goal is different &#8211; apply new better solution. There is great book on this theme: &#8220;Refactoring to Patterns&#8221; from Joshua Kerievsky.       </p>
<p>In any case I&#8217;m happy for you, because you identified issues early and avoid large problems in future.</p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: Franco Lombardo				</title>
				<link>http://matteo.vaccari.name/blog/archives/471/comment-page-1#comment-93598</link>
		<dc:creator><![CDATA[Franco Lombardo]]></dc:creator>
		<pubDate>Mon, 08 Nov 2010 17:25:58 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=471#comment-93598</guid>
					<description><![CDATA[Matteo,

you say: &quot;TDD is about design. It’s not about testing.&quot;
Well, it seems that (also) this time TDD failed to create the right design! :-)
I think that TDD is sometimes overestimated as a design tool. Well, I mean, it&#039;s a great tool for &quot;tactic&quot; design, not for the &quot;strategic&quot; one.]]></description>
		<content:encoded><![CDATA[<p>Matteo,</p>
<p>you say: &#8220;TDD is about design. It’s not about testing.&#8221;<br />
Well, it seems that (also) this time TDD failed to create the right design! :-)<br />
I think that TDD is sometimes overestimated as a design tool. Well, I mean, it&#8217;s a great tool for &#8220;tactic&#8221; design, not for the &#8220;strategic&#8221; one.</p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: matteo				</title>
				<link>http://matteo.vaccari.name/blog/archives/471/comment-page-1#comment-93592</link>
		<dc:creator><![CDATA[matteo]]></dc:creator>
		<pubDate>Sun, 07 Nov 2010 14:40:20 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=471#comment-93592</guid>
					<description><![CDATA[Controller gone.  &quot;Model&quot; gone.  They were not needed :-)

You could say that there&#039;s now a collection of objects that take the place of what was the controller.]]></description>
		<content:encoded><![CDATA[<p>Controller gone.  &#8220;Model&#8221; gone.  They were not needed :-)</p>
<p>You could say that there&#8217;s now a collection of objects that take the place of what was the controller.</p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: Gicappa				</title>
				<link>http://matteo.vaccari.name/blog/archives/471/comment-page-1#comment-93591</link>
		<dc:creator><![CDATA[Gicappa]]></dc:creator>
		<pubDate>Sun, 07 Nov 2010 11:04:33 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=471#comment-93591</guid>
					<description><![CDATA[So interesting. But I&#039;m curious: at the end the mvc pattern evaporated with the big controller or it was still there?]]></description>
		<content:encoded><![CDATA[<p>So interesting. But I&#8217;m curious: at the end the mvc pattern evaporated with the big controller or it was still there?</p>
]]></content:encoded>
						</item>
			</channel>
</rss>
