A condition of source code expansion often associated with CreepingFeaturitis
s and an unwillingness or inability to RefactorMercilessly
. The opposite of GoodTightCode
I dunno. I have never heard CodeBloat
used to imply that the code was de facto bad code, just that CreepingFeaturitis
had not been stopped and every last bit of the MarketeeringDroid?
's dreams had been included.
What is the difference, if any, between BloatWare
In common parlance, BloatWare
is software actually on the market
in some capacity which you can install and run, but users only find themselves using maybe 20% of its supported features. It is a relative assessment of code size versus functional utility of the product. For example, if all you ever use Microsoft Word for is writing shopping lists, you might find yourself aggravated with its long start-up time and user-hostile interface. To you, Word would unequivocally be BloatWare
. However, to a professional author, she might find herself threatening her monitor with physical gestures about the next time Clippy pops up in the middle of writing the next chapter of her long-awaited sequel to a national best-seller. This, too, is considered BloatWare
; she might feel that her hard-earned cash is being used to support unintelligent cartoons instead of tools to help her as a professional author.
, meanwhile, is more objective and lower level in scope; unlike the subjective BloatWare
can actually be measured
, assuming you have access to the program's set of specifications. It perhaps is best explained by way of example:
- requiring a complete ComponentObjectModel or CommonObjectRequestBrokerArchitecture implementation to support a plug-in system that otherwise has much simpler requirements.
- mandating errors be checked even if it can be proven errors cannot occur at those points in the code (yes, array bounds-checking versus unchecked array indices falls into this category).
- Supporting multiple languages and internationalization even though 90% or greater of your target audience speaks only one language.
- Beautifying icons, often by increasing the color depth and/or resolution, which otherwise do not contribute to the productivity of the software in any other way. Thus storage requirements increase.
- Any code which you need to write that is boilerplate (and thus, violates DontRepeatYourself in the global scope of the software as shipped), or which exists solely to undo some backwards interface imposed by software which cannot be removed for compatibility reasons. (Footnote: Interestingly, more than half of the Win32 API falls under this latter category. CreateWindow() versus CreateWindowEx(), for example.)