ActionScript, Dogfood and Refactoring
Over the last two weeks we’ve been ’dogfooding’ the Amethyst refactoring code. In other words, we’ve been testing the Amethyst refactoring stuff – Rename, Find All References, Encapsulate Field, Smart Tags, etc., by using Amethyst as the refactoring tool. Let me explain ...
Amethyst is actually made from two principal components. There’s the core IDE written in C# and there’s the form designer (the Amethyst Designer), written in ActionScript. The Amethyst Designer hasn’t been released in a beta yet. In fact, it will be the last piece of Amethyst to be released to beta prior to our first commercial release of Amethyst Professional.
The C# part of Amethyst deals with the actual refactoring (and all the other interfacing code to Visual Studio itself) while the Designer is a Flex project (a pretty complicated one too with several thousand lines of heavy duty ActionScript). Before going into production, it seemed a good idea to restructure all the code of the Designer to get it into a more maintainable form.
Up to this point, we had been using Flex Builder to do most of the ActionScript code. But there comes a point when every bird has to leave the nest and fly. And so, over the last few weeks, we’ve been switching the development of the Designer into Amethyst itself – ‘dogfooding’ in other words.
For me this is a first: I’ve never dogfooded before. It’s been an illuminating experience. Initially, there were many cries of ‘Your (expletive deleted) refactoring has just mangled half of my (expletive deleted) code’ followed by ‘Well, if you didn’t write such (expletive deleted) convoluted ActionScript, it would have (expletive deleted) worked!’. You get the idea – it was painful.
But we’ve now got to the point where it’s working quite well. The Amethyst refactoring is fast and comprehensive; the debugger is fast too and has a number of special capabilities which we’ll write about soon.
We’ve still got some way to go – and a few more (expletive deleted)s will no doubt be issued, but for a thoroughly good test, I’d recommend ‘dogfooding’ every time. It really is the way to get things tested rapidly and effectively.