(and how less gives you more)
Every single Java codebase I have ever come across has had a project called core or common or somesuch. And almost-universally, dwelling within this library, under the banner of "useful functionality used by other projects" lurk classes like:
- StringUtils for String manipulation
- FileHelper for dealing with files
- ValidationUtils for argument-checking
- DateHelper for tweaking Dates
I know, I know. But I've seen this macro-level antipattern in even the most experienced of development houses.
If you have a "core" library featuring any of the above stuff, exorcise that code now. Right now. Your core library is a liability. You are maintaining redundant code that almost-certainly has bugs you haven't found yet.
In the spirit of simplification, may I humbly recommend:
- Apache Commons Lang gives you StringUtils, DateUtils and loads more besides.
- Google's Guava (formerly Google Collections) gives you fabulous, fully-genericised collection-manipulation, plus some handy-dandy utilities like Preconditions to take care of your argument-checking requirements
These libraries will slim down your "core" to stuff that is genuinely domain/site/whatever-specific.
Grab them, learn them, use them, love them :-)