generality : Java Glossary
There are two kinds of generality: good and bad. Good generality is sometimes called
abstraction. This is where you discover the essential core
to a class of problems that all behave the same way, then encapsulate it, e.g
Collection. Bad generality when you metaphorically
invent a processor with switch on the front with settings food and word Everything you need to make
adjustable to your solution is usually thought of as a feature. I think of it as the
combinatorial explosion of test cases you need to ensure the code works properly.
Don’t needlessly make everything configurable. If worse comes to worse, clients
can modify the source code and make themselves responsible for the consequences.
Obviously, there are many things you can completely safely make configurable without
any additional testing.
Think of a highly adjustable chair. It is not as stable as a fixed chair. The same
applies to computer programs.