is an opposite to DesignShield
tells the world something about the internals of your design, hopefully something you want them to know. See HungarianNotation
for an example of a DesignBurp
that was considered useful. --AlistairCockburn
Useful to have a word for this concept - thanks. Java uses keyword "extends" when a class inherits from another class, and "implements" when it inherits from an interface. This would be another example of a DesignBurp
. Presumably it is intentional, although it is annoying when you turn a class into an interface (so as to allow multiple inheritance) or an interface into a class (so that it can carry some implementation).
Whether a burp is a good thing can be a hard judgement call. -- DaveHarris
In some places you are supposed to burp after a good meal, to be polite.
And leave some, to show that you weren't left wanting more.
In the case of Java, I'm not so sure it's a burp. :)
Firstly, it is important that users of an object instance are aware of its types. So the fact that type information (the inheritance hierarchy and the implemented interfaces) is exposed is good.
Remember that extending a class means that you've taken on its behaviour. Knowing that a Widget extends Gadget is important; it means that I can assume that a Widget behaves exactly like a Gadget, except for the overridden methods (which I'll have to check). That's good useful information. So the fact that Java chooses to highlight which type hierarchy happens to include behavior is a GoodThing
If Java had multiple inheritance, then you wouldn't need interfaces; you'd just have classes, some of which would be purely abstract. With single inheritance, it's nice to know where the behaviour is coming from.
Now, if you have a class that you don't wish to expose, don't make it public. :)
In addition to the above, it probably makes the compiler implementor's life easier. -- RobertWatkins