[FoRK] Versioned Literate Aspect-Oriented Programming
Kenneth.Meltsner at ca.com
Tue Mar 16 20:06:37 PST 2004
Strictly speaking, according to the mavens (Fowler, for example)
refactoring is limited to restructuring/rewriting the code without any
changes in functionality. That doesn't mean that refactoring isn't an
important part of adding new features, but the goal is to clean things
up and still pass all of the appropriate tests.
Once a term known to only a few, "Refactoring" is commonly tossed around
the computer industry. I like to think that I'm partly responsible for
this and hope it's improved some programmers lives and some business's
bottom lines. (Important point, I'm not the father or the inventor of
refactoring - just a documenter.)
However refactoring is often used when it's not appropriate. If somebody
talks about a system being broken for a couple of days while they are
refactoring, you can be pretty sure they are not refactoring. If someone
talks about refactoring a document, then that's not refactoring. Both of
these are restructuring.
I see refactoring as a very specific technique to do the more general
activity of restructuring. Restructuring is any rearrangement of parts
of a whole. It's a very general term that doesn't imply any particular
way of doing the restructuring.
Refactoring is a very specific technique, founded on using small
behavior-preserving transformations (themselves called refactorings). If
you are doing refactoring your system should not be broken for more than
a few minutes at a time, and I don't see how you do it on something that
doesn't have a well defined behavior.
I realize I may be fighting a losing game here, but I do want to
preserve the precision of the word refactoring. There may be other good
techniques for restructuring, but they are different. I'd like us to be
clear about what we mean when we use this word.
More information about the FoRK