Better Names for Martin Fowler's "Refactoring Smells"
Martin Fowler's Refactoring (1999) is a landmark book for software engineering. It is a catalog of techniques for cleaning up code. Unfortunately, this remarkable book is tarnished by some frivolous names chosen for its list of "refactoring smells" (anti-patterns). Unlike the memorable pattern names from that other luminous book Design Patterns (1995) – Singleton, Observer, Visitor, etc. – the anti-pattern names in Refactoring sometimes degenerate into the ludicrous: Feature Envy, Inappropriate Intimacy, Primitive Obsession, Speculative Generality, ...
The worst part is that these names give little clue as to what they mean.
I would like to propose alternative names for some of Fowler's "refactoring smells". Many of the names are fine as is, but a number of them benefit from sober clarity of expression:
|Old Name||New Name|
|Alternative Classes with Different Interfaces||Heterogeneous Interfaces|
|Divergent Change||Schizophrenic Class|
|Feature Envy||Satellite Method|
|Inappropriate Intimacy||Internal Access|
|Incomplete Library Class|
|Lazy Class||Small Class|
|Long Parameter List|
|Message Chains||Temporary Variables|
|Parallel Inheritance Hierarchies|
|Primitive Obsession||Procedural Code|
|Refused Bequest||Weak Inheritance|
I would also like to improve on "Shotgun Surgery" (in which a modification involves touching code in several places), but I cannot think of an apt name. Any suggestions?