Good names are hard to come up with.
Some reasons we suck at naming:
- We get in a hurry
- Good names take careful thought
- We are in a hurry
I see a theme.
Here are some rules of thumb I’ve found handy.
Don’t encrypt a variable name. For example, if you are tempted to call a “request id” hashValue
because every request is assigned a unique hash, you have encrypted the meaning of the variable (and obfuscated it on top of that). Yeah, don’t do that.
Don’t make method names overly generic. For example, if you have a method that calculates the balance in an account, don’t call it “processAccount()
“. Instead call it calculateBalance()
. It’s much clearer what it does, and you’re less tempted to pollute it with other functionality that should be included elsewhere as you maintain and enhance the code (think of it as technical debt insurance).
Don’t abbreviate variable or method names. Ever. EVER. The abbreviation might make sense to you, today, as of this moment. But chances are six months from now, it will take you a second to figure out what the heck maxBalCalcd
means (maximum calculated balance value? maximum balance calculation date? No, sorry, it’s “has the maximum calculated balance been reached”, thanks for playing). As sucky as we are at naming, we are even suckier at abbreviating those bad names. Your colleagues will thank you (okay, probably not, but it’s still a good idea).
Don’t play code golf with variable or method names. I’ve seen really smart developers use variables like e
to hold the return value from a function call. And the description of the data does not even start with the letter e
. But even if it did, it’s still a bad idea. It’s not obvious what it does, and just makes the code harder to read.
Do give something a name that exactly matches what it is does. If it’s a function or method, name it according to what it does (and if it’s name would be too long if you called it everything it does, then you need to refactor your design). If it’s a variable, name it according to the type of data it holds.
Do give loop variables simple names. Yes, this seems to fly in the face of what I’ve been saying, but I’m talking about throw-away variables that are used to loop through the items in a collection, for example. I like aa
, bb
, and cc
. Some like i
, j
and k
. But whatever you do, for god sakes, though, don’t call it loopVariable
. That’s overkill.
Do use long names because they’re descriptive. I would much rather see a method called computeChecksumIfPossible()
than compChksum()
.
Do learn the language of the business domain you’re writing code for, and name things accordingly. My favorite awful method name of all time: getAreaCode()
. Looks innocent enough, right? Turns out the developer wanted the first three digits of the U.S. zip code. In the USA the term “area code” has a whole other meaning. I’m not making this up.
Hope you found these tips helpful. Please feel free to comment and add a few of your own.
Happy naming!
–jsp
You must be logged in to post a comment.