One of the most interesting artifacts of most programming languages using English conventions is variable naming. Today I contend that:
English Grammar is a Terrible Programming Default
Consider how you would specify that a room is for guests in English,
or a car is designed to be sporty. In both cases, the specifier comes
before the object or category:
- Sports Car
- Guest Room
- Persian Cat
Since programming languages are primarily based on English, it's a natural default to name your variables in a similar order:
To further qualify your classes, one prepends additional information:
And the pattern continues. As more qualifiers are added, the more names are prepended.
This reads well, if our main goal was to make software read as close
to english as possible. However, software has a goal that's more
important than grammatical correctness: organization and searchability.
Naming should have qualifiers last
Consider instead appending qualifying variables to the end, as with a namespace:
It's still legible as an English speaker: it's clear the adjectives are inverted. It also provides a couple other advantages too:
If you sorted all class names next to each other, the groupings would happen naturally:
In contrast to the previous example:
Clear correlation while scanning
If you're trying to look through a table of values quickly,
using the reverse-adjective writing shows a clear organization, even when unsorted.
In contrast to:
Our variable naming convention wasn't deliberate: it was an artifact
of the language that it was modeled against. Let's adopt conventions that
come from a logical foundation. Like more search-friendly ordering of class qualifiers.