Naming is still hard.
Ideally, we would have excellent and obvious names for all variables, classes, packages, methods, etc. But it's hard to be excellent all the time. People building the java libraries struggled with names, I can tell, and though I don't always appreciate their choices I recognize that this is a multifaceted problem. Maybe a moment of agonizing over a bad name might help share a mental model, and some patterns or smells for naming methods. Let's give it a shot. A Tiny Example Here is a tiny, dull, dumb snippet: Date now = new Date(); DateFormat df = DateFormat.getDateInstance(LONG, Locale.FRENCH); System.out.println(df.format(now)); Java has a method called getDateInstance() . Does it return an instance of a date? No, it does not. If it lived in a package called Date then it would be a terribly wrong name, but it doesn't live there. It returns an instance of a date formatter, whose class is called DateFormat. DateFormat doesn't seem like such a...