Read a review of this modern classic book by Martin Fowler of UML Distilled fame. Excerpt: Refactoring is a risky procedure that dates back to the advent of the SmallTalk programming language. But, it has since spread to all modern languages; and, it is considered critical in framework and class library development—because a framework is never right on the first iteration. Whether refactoring as a discipline is a workable practice is controversial. Adherents lobby for more disciplined restructuring and testing while doubters claim real life refactoring is impractical and tricky.