Through early morning fog I see
visions of designs to be
the features all withheld for me
I realize and I can see...
Refactoring is painless
It brings on many changes
and I can take or leave it if I please.
I try to find a way to make
all our little frobs relate
without that ever-present bait
but now the project isn't running late, and...
refactoring is painless
it brings on many changes
and I can take or leave it if I please.
... and you can do the same thing if you choose.
Apologies to Johnny Mandel...
Whew. I just worked through a major refactoring that fixed a long-standing bug in behavior of an object. It was kind of cool: every time I saw that I broke a whole bunch of tests, I backed up to the last "good" version and tried something else. The unit tests steered me into making a string of several painless changes that lead to the correct behavior! Much better than
KamikazeCoding... --
MichalWallace
It's great when this happens. I think you've just reminded us of a basic tenet of refactoring - that for it to be painless you've got to have
UnitTests. My problem is that I'm currently working on a code review with a company where I've recommended some major refactoring to a project. The problem is they don't have
UnitTests and I have explicitly told them
not to start the refactoring until they have the
UnitTests. So now I have to convince their management to give them a couple of weeks in which
no new code will be written so that they can write the
UnitTests.
Sigh... --
KyleBrown
When I am
BehindOnMyTests, I write
some UnitTests before refactoring. Otherwise, I have an excuse to never start refactoring. If things start breaking, I back up and write more tests. (Also, compare this page with
SteveMellor's comment that
ChangeShouldBePainful) --
KentBeck
CategoryRefactoring