FrameworkBuilding refactoring 18 May 2003 Reactions

Can you use refactoring to build a framework?

It's a common question, and the short answer is that yes, refactoring is very useful when building a framework. But the issues involved depend on the state of life of the framework, and particularly in the approach you use to building a framework.

The common issue in the mind of someone who has this question is that users of a framework need a stable interface to work against. Any changes to an interface can have severe ripple effects. In my terminology, a framework usually has a Published Interface. Published interfaces are usually a pain for refactoring because any refactoring that changes a published interface is made much more difficult.

One reason this is less of an issue is because many refactoring that you might do to a framework don't affect the published interface. Within the non-published boundary, you can refactor freely. Sadly languages usually don't allow you to mark published interfaces very cleanly, so you'll usually have to do some extra work to set up a properly published section to your interface.

Styles of Framework

The role of refactoring has a lot to do with how you build your frameworks. Many people have the notion of a FoundationFramework. In this case you have to fix and publish your API as soon as possible, which means that refactoring is less useful due the limits I mentioned above.

But a FoundationFramework isn't necessarily the best way to go. I've seen a lot of failures in building frameworks that way. I think HarvestedFramework is a much better way to go, and refactoring is extremely useful when you are building a HarvestedFramework.


Links
home
bliki
feed 
Translations
Japanese
Spanish
Korean
Chinese
Thai
Categories
agile
design
dsl
leisure
refactoring
ruby
thoughtWorks
tools
uml
writing
Blog Roll
ThoughtBlogs
TW Alumni
Nicholas Carr
Steve Cook
Brian Foote
Simon Harris
Gregor Hohpe
/\ndy Hunt
Ralph Johnson
Patrick Logan
David Ing
Brian Marick
Jeremy Miller
Jimmy Nilsson
Samuel Pepys
Keith Ray
Johanna Rothman
Kathy Sierra
Dave Thomas