<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<channel>
<title>/* Rambling comments... */</title>
<link>http://www.lenholgate.com/</link>
<description>Len Holgate&apos;s thoughts on this and that...
Mainly test driven software development in C++ on Windows platforms... - Refactoring</description>
<dc:language>en-us</dc:language>
<dc:creator>Len.Holgate@JetByte.com</dc:creator>
<dc:date>2005-07-20T18:28:32+00:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.64" />
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>

<item>
<title>A single responsibility, please</title>
<link>http://www.lenholgate.com/archives/000436.html</link>
<description>

Having got the CMessageProcessor under test in the last posting. I added a few easy tests for the object and then I came to another hard to add test. The reason that it was hard to add was that the...

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000436.html">06:28 PM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=436" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>
, <a href="http://www.lenholgate.com/archives/cat_socket_servers.html">Socket Servers</a>

	</div>]]>

</description>
<guid isPermaLink="false">436@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2005-07-20T18:28:32+00:00</dc:date>
</item>
<item>
<title>More Socket Server Refactoring</title>
<link>http://www.lenholgate.com/archives/000386.html</link>
<description>

I&apos;m currently working on a simple auction server for a client. You can think of it as a specialised chat server, of sorts. One of the things it must do is broadcast messages from one user to a set of users. This is relatively easy to implement in a crude way in our socket server framework but it&apos;s not nice. Time to refactor towards niceness...

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000386.html">11:10 PM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=386" >Comments (2)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>
, <a href="http://www.lenholgate.com/archives/cat_socket_servers.html">Socket Servers</a>

	</div>]]>

</description>
<guid isPermaLink="false">386@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2004-10-14T23:10:05+00:00</dc:date>
</item>
<item>
<title>They&apos;re learning</title>
<link>http://www.lenholgate.com/archives/000370.html</link>
<description>

I&apos;m back with the guys on the refactoring project for a couple of days. I got to my desk, updated my CVS tree and started to check my email. The first mail was from the boss man of the team; &quot;I fixed a bug in the FX code earlier in the week, we need to write a test for it so it doesn&apos;t happen again&quot;, followed by &quot;by the way, this time all the tests still run, I checked them all myself on Monday&quot;. This is considerably better than last time I visited them.

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000370.html">11:02 PM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=370" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">370@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2004-09-09T23:02:16+00:00</dc:date>
</item>
<item>
<title>Reducing what the code could do to just what the code should do</title>
<link>http://www.lenholgate.com/archives/000349.html</link>
<description>

I&apos;ve got one of those &apos;please dig us out of this hole before we ship on Friday&apos; gigs this week. I&apos;m back with the refactoring project for a few days and, well, when the cat&apos;s away...

So, we&apos;re 80% done but none of it seems to work, no tests, and the design seems a tad overly complex and it just must go live by Friday... Our task is simple, just clean things up, make it work right and finish the other 80%.

The code is the usual mess of highly coupled, overly complex, unrestricted, unplanned, half understood, thought droppings; at least there&apos;s no XML...

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000349.html">07:26 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=349" >Comments (2)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">349@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2004-08-03T07:26:38+00:00</dc:date>
</item>
<item>
<title>Back with the refactoring project</title>
<link>http://www.lenholgate.com/archives/000314.html</link>
<description>

I spent a little time with the guys on the refactoring project last week. Of course, as is the way, pressure from the business for more functionality has reduced the amount of clean up work that they&apos;ve been able to do. The good news is that the builds are still repeatable and most of the tests pass. The bad news is only most of the tests pass.

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000314.html">01:41 PM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=314" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">314@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2004-05-25T13:41:12+00:00</dc:date>
</item>
<item>
<title>Admitting that your baby&apos;s ugly</title>
<link>http://www.lenholgate.com/archives/000236.html</link>
<description>

I have a couple of days to myself. We&apos;ve just shipped some code to a client a couple of days ahead of schedule and we&apos;re waiting to recieve a purchase order from another client so I find myself without any client work to do. I&apos;ve decided to try and refactor the socket server code that we&apos;re using a lot right now. Whilst working on the code that we&apos;ve just shipped I realised that the new code I was writing was much easier to test than the socket server library that formed a major part of the project, so now that I have some time I&apos;m going to try and rectify that. The problem is, it means facing up to some unfortunate facts...

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000236.html">11:12 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=236" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>
, <a href="http://www.lenholgate.com/archives/cat_socket_servers.html">Socket Servers</a>

	</div>]]>

</description>
<guid isPermaLink="false">236@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2004-01-27T11:12:54+00:00</dc:date>
</item>
<item>
<title>End of the refactoring project</title>
<link>http://www.lenholgate.com/archives/000220.html</link>
<description>

My time working on the refactoring project has come to an end; at least for a while. Here&apos;s a little look back over what we achieved.

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000220.html">11:42 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=220" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">220@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2003-12-20T11:42:14+00:00</dc:date>
</item>
<item>
<title>Bug hunt on the refactoring project</title>
<link>http://www.lenholgate.com/archives/000214.html</link>
<description>

The refactoring project rolls on. Mostly it&apos;s been more of the same so I haven&apos;t bothered boring my reader with the details. This week we had an interesting bug to fix. The bug had appeared in a much earlier version, way back in July, but it had only been reported by one user and we could never duplicate the problem. This week we managed to duplicate it, and then we needed to work out what it was and when it was added to the source...

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000214.html">08:21 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=214" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">214@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2003-11-21T08:21:27+00:00</dc:date>
</item>
<item>
<title>Back to the refactoring project</title>
<link>http://www.lenholgate.com/archives/000179.html</link>
<description>

I&apos;ve spent the last couple of days back with The Refactoring Project. They&apos;ve done well in my absence. They managed 3 releases; all correctly tagged and repeatable. They started some refactoring of their own and, at first glance, it looks like they&apos;ve taken on board lots of the suggestions I&apos;ve been making over the last months. They&apos;ve fixed a couple of new bugs in the FX code and whilst doing so found that a) the bugs were easy to locate, b) they were easy to fix with very localised changes, and c) the new code was much easier to work with! They even ran the tests after making the changes! All in all quite a reassurring result.

Now, of course, I have to move away from the relative safety of the newly refactored FX code (complete with tests) and back into the pile of code that has yet to be touched... Still, at least things are heading in the right direction. 

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000179.html">08:24 PM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=179" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">179@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2003-10-01T20:24:25+00:00</dc:date>
</item>
<item>
<title>You&apos;ll tick when I say so and not before!</title>
<link>http://www.lenholgate.com/archives/000147.html</link>
<description>

Today we wrote some complicated FX business logic tests. Things like making sure that the FX library can calculate a EURUSDCAD 1M rate - it can; or a USDCAD ON rate - it can&apos;t...

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000147.html">06:43 PM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=147" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>
, <a href="http://www.lenholgate.com/archives/cat_testing.html">Testing</a>

	</div>]]>

</description>
<guid isPermaLink="false">147@http://www.lenholgate.com/</guid>
<dc:subject>Testing</dc:subject>
<dc:date>2003-08-13T18:43:30+00:00</dc:date>
</item>
<item>
<title>The first FX test</title>
<link>http://www.lenholgate.com/archives/000145.html</link>
<description>

On Friday we got to the point where the FX buiness logic code was suitably decoupled from the display logic that we could write our first test for the business logic. In the words of Homer Simpson, &quot;Woo hoo!&quot;.

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000145.html">07:28 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=145" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>
, <a href="http://www.lenholgate.com/archives/cat_testing.html">Testing</a>

	</div>]]>

</description>
<guid isPermaLink="false">145@http://www.lenholgate.com/</guid>
<dc:subject>Testing</dc:subject>
<dc:date>2003-08-11T07:28:02+00:00</dc:date>
</item>
<item>
<title>FX refactoring</title>
<link>http://www.lenholgate.com/archives/000142.html</link>
<description>

Bleugh! You are lost in a maze of crapy code, all alike (and much of it copy and pasted!). The last few days have been deep in the heart of darkness. Gently teasing the business logic and the display logic of the FX code apart so that we might one day be able to write tests for the business logic.

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000142.html">10:21 PM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=142" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">142@http://www.lenholgate.com/</guid>
<dc:subject>Refactoring</dc:subject>
<dc:date>2003-08-07T22:21:04+00:00</dc:date>
</item>
<item>
<title>It&apos;s important who&apos;s driving</title>
<link>http://www.lenholgate.com/archives/000105.html</link>
<description>

I&apos;m a firm believer that software rots unless you&apos;re very careful; and like apples, once one piece starts to go bad the rest quickly follows. The Pragmatic Programmers talk about Software Entropy and The Broken Window Theory and, unfortunately, this week the refactoring project showed how true this is... 

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000105.html">07:29 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=105" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">105@http://www.lenholgate.com/</guid>
<dc:subject>Geek Speak</dc:subject>
<dc:date>2003-06-24T07:29:06+00:00</dc:date>
</item>
<item>
<title>Developer buy in</title>
<link>http://www.lenholgate.com/archives/000081.html</link>
<description>

The refactoring project rolls on and the code gets better. This week saw a marked change in attitute from some of the developers on the team......

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000081.html">12:11 PM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=81" >Comments (2)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">81@http://www.lenholgate.com/</guid>
<dc:subject>Geek Speak</dc:subject>
<dc:date>2003-06-13T12:11:51+00:00</dc:date>
</item>
<item>
<title>We came. We saw. We did a little testing. </title>
<link>http://www.lenholgate.com/archives/000063.html</link>
<description>

Another week another release. Well, almost. The plan was to release today. The plan ignored the fact that most of the team are at a wedding this weekend and nobody was around today and nobody&apos;s around on Monday......

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000063.html">12:06 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=63" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>
, <a href="http://www.lenholgate.com/archives/cat_testing.html">Testing</a>

	</div>]]>

</description>
<guid isPermaLink="false">63@http://www.lenholgate.com/</guid>
<dc:subject>Geek Speak</dc:subject>
<dc:date>2003-05-31T00:06:09+00:00</dc:date>
</item>
<item>
<title>One step closer to sanity</title>
<link>http://www.lenholgate.com/archives/000061.html</link>
<description>

Now that the refactoring project has tests it&apos;s worth having a daily build so that it&apos;s easy to spot if someone checks something in that breaks a test....

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000061.html">11:23 PM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=61" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">61@http://www.lenholgate.com/</guid>
<dc:subject>Geek Speak</dc:subject>
<dc:date>2003-05-27T23:23:55+00:00</dc:date>
</item>
<item>
<title>Refactoring project: Joel Test, reprise</title>
<link>http://www.lenholgate.com/archives/000052.html</link>
<description>

Last week we were a 5.5, now we&apos;re an 8. Not bad progress, but there&apos;s still a long way to go until the project can get a &apos;SaneMark&apos;...

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000052.html">12:51 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=52" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">52@http://www.lenholgate.com/</guid>
<dc:subject>Geek Speak</dc:subject>
<dc:date>2003-05-18T00:51:30+00:00</dc:date>
</item>
<item>
<title>Dawn of the dead</title>
<link>http://www.lenholgate.com/archives/000048.html</link>
<description>

One of the problems with the code base that we&apos;re refactoring is that it&apos;s full of dead code.

Throughout the system there were swathes of code that were commented out, there was very little in the way of explanation as to why the code was not currently required and when it might be required again.

This week we dealt with it...


<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000048.html">09:16 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=48" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">48@http://www.lenholgate.com/</guid>
<dc:subject>Geek Speak</dc:subject>
<dc:date>2003-05-17T09:16:07+00:00</dc:date>
</item>
<item>
<title>On Cringely On Refactoring</title>
<link>http://www.lenholgate.com/archives/000045.html</link>
<description>

Bob Cringely has been upsetting some programmers with his comments on refactoring. He seems to intentionally miss the point that not all code changing is refactoring: some of it is still just hacking. Refactoring is risk management.

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000045.html">11:53 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=45" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">45@http://www.lenholgate.com/</guid>
<dc:subject>Geek Speak</dc:subject>
<dc:date>2003-05-11T11:53:07+00:00</dc:date>
</item>
<item>
<title>The Joel Test</title>
<link>http://www.lenholgate.com/archives/000041.html</link>
<description>

Joel Spolsky has a quick test to rate how good your software development process is. I thought it would be useful to see how the refactoring project scores....

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000041.html">07:17 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=41" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">41@http://www.lenholgate.com/</guid>
<dc:subject>Geek Speak</dc:subject>
<dc:date>2003-05-09T07:17:06+00:00</dc:date>
</item>
<item>
<title>Understanding bad code</title>
<link>http://www.lenholgate.com/archives/000037.html</link>
<description>

I always used to think that there was probably a good reason behind things I didn&apos;t understand. Now I&apos;m far quicker at deciding that the reason is that the person who created the thing I don&apos;t understand didn&apos;t understand either.

<![CDATA[<div class="posted">Posted by Len at <a href="http://www.lenholgate.com/archives/000037.html">08:22 AM</a>
		| <a href="http://www.lenholgate.com/mt/mt-comments-17.cgi?entry_id=37" >Comments (0)</a>
	
	
| Categories: <a href="http://www.lenholgate.com/archives/cat_geek_speak.html">Geek Speak</a>
, <a href="http://www.lenholgate.com/archives/cat_refactoring.html">Refactoring</a>

	</div>]]>

</description>
<guid isPermaLink="false">37@http://www.lenholgate.com/</guid>
<dc:subject>Geek Speak</dc:subject>
<dc:date>2003-05-08T08:22:36+00:00</dc:date>
</item>


</channel>
</rss>
