It seems to me that there's a deep principle inherent in refactoring patterns such as ExtractMethod and RefactorByExtractingToPage: ExtractToGrow. Many times, when refactoring code, wiki pages, or technical specs by extracting an idea (methods, classes, concepts), I have found that the simple act of extraction gives the idea room to breathe, and it springs to new life, growing to take on new meaning in its context, almost on its own, and almost if alive. It seems to me that this thought is echoed in RefactoringImprovingTheDesignOfExistingCode, but I can't find the quote I want right now. It might take me several tries to get the metaphors right here. In some ways, it's like pruning a tree, or perhaps planting a cutting from an existing plant. But I have to admit that the metaphor that feels most right is an image from TheLifeOfTheCosmos (LeeSmolin, ISBN 019510837X: A book in turns brilliant and perplexingly misguided in its premises and conclusions). In that book, he puts forth what seems to me a beautiful cosmological image: in a well-balanced and complex universe, matter clumps into meaningful objects such as stars, galaxies, planets, and dogs. However, when that matter overclumps, it turns in upon itself, taking a small region of space with it, which, unseen by us, explodes in a new big bang to create a new universe "on the other side" of the black hole. To me, this is not only a fertile cosmological supposition, but also a fruitful metaphor for the principle of ExtractToGrow. -- David Saff ---- CategoryRefactoring CategoryGardeningMetaphor