[BangPypers] refactoring

Sirtaj Singh Kang sirtaj at sirtaj.net
Mon Dec 6 05:36:46 CET 2010


On 12/4/2010 5:36 PM, Santosh Rajan wrote
[snip]
> Let us look at software product development, and let us look at all
> the top open source software development projects like linux, apache,
> mozilla etc etc. I have not seen refactoring as described by the book
> used by any of the open source software products. I would like to know
> if any one can show me refactoring used in software product
> development.
>

This reminds me of the kind of discussion I used to hear when the GoF 
Design Patterns book was published. Lacking experience, I was in awe of 
the book since it codified so much practice that I could look at and go 
THAT MAKES SO MUCH SENSE. It took years and a lot of experience to 
understand that this was just a compendium of best practices that many 
OOP programmers had been applying for decades, taking them so much for 
granted that they hadn't even bothered to give them names.

Unfortunately there were too many people who never saw past it being 
some sort of bible, so (as an example) you'd have people drop by KDE dev 
mailing lists 5-6 years later complaining that the KDE libraries were 
poorly designed because they couldn't go through the code and identify 
the design patterns by name.

This is a pattern that I've seen repeated often over the last twenty 
years (the Java world is particularly guilty of it). There is 
unquestionable value to the classification and codification of best 
practices in software engineering, which has a real paucity of good 
references of this kind, but it must be kept in perspective of what 
people are doing. Unfortunately, compared to other forms of engineering 
it's both more difficult and more given to fads.

So what I'm saying is, it is unlikely that this book contains anything 
that any sufficiently large and long-lived software project (FOSS or 
otherwise) is not already doing, because it is critical to their 
success. You will just have to work a little harder to identify it 
because they may not have bought into your taxonomy of refactoring terms.

[dubious aside: remember this one?

There once was a master programmer who wrote unstructured programs. A 
novice programmer, seeking to imitate him, also began to write 
unstructured programs. When the novice asked the master to evaluate his 
progress, the master criticized him for writing unstructured programs, 
saying, ``What is appropriate for the master is not appropriate for the 
novice. You must understand the Tao before transcending 
structure.''There once was a master programmer who wrote unstructured 
programs. A novice programmer, seeking to imitate him, also began to 
write unstructured programs. When the novice asked the master to 
evaluate his progress, the master criticized him for writing 
unstructured programs, saying, ``What is appropriate for the master is 
not appropriate for the novice. You must understand the Tao before 
transcending structure.'']

-Taj.


More information about the BangPypers mailing list