If the only tool you have is Java, everything looks like a class
<rant>
There’s a common phrase used within software development:
If the only tool you have is a hammer, everything looks like a nail
It exists in various forms, but the original source is the Law of the instrument, or Maslow’s Hammer.
I started thinking about this while reading through Head First Design Patterns today (a bizarre book, not quite sure yet whether I can recommend it). As part of my self-education into the Gang of Four Design Patterns, I thought I’d start with this, as I’d read recommendations to read this before the GoF book.
What struck me was that the solution to every design problem in Java revolves around writing a new class. It just astounds me that there’s basically no other means of abstraction in the language. I’ve got so used to languages with lambdas, for example, that the idea of creating a LightOnCommand
class that implements the Command
interface to encapsulate the act of turning a light on feels like such a waste of brainpower, bytes, and sanity. I’d hate to have my expressivity limited so heavily.
</rant>