jQuery in Action, 3rd edition
The moose likes Beginning Java and the fly likes Identifiers: Inscrutable versus A Little Longer? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of REST with Spring (video course) this week in the Spring forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Identifiers: Inscrutable versus A Little Longer?" Watch "Identifiers: Inscrutable versus A Little Longer?" New topic

Identifiers: Inscrutable versus A Little Longer?

Robin Lane
Ranch Hand

Joined: Apr 30, 2008
Posts: 76
I've been noticing in some posts from other college students that identifiers and, at times, indecipherable to me (another Java Beginner). My textbook and the three Java for Dummies books I own indicate that identifiers should be meaningful. Obviously, the experienced people here on Java Ranch understand the identifiers, because their understanding of Java is far greater than mine. It's similar to be able to untangle someone's typos (in English-language posts) when you are fluent in English.

Anyway, my question is this. (Yes, I know you were wondering when I would get around to it.) In the Real World of Programming for a Living, what are the guidelines for creating and/or using meaningful identifiers? For example, I've worked in Retail, therefore I know that stock isn't something you buy through a broker as an investment; it is synonamous with inventory. Also, Cost is the same as Price but both are ambiguous, as you can have wholesale, retail, or sales prices/costs.

I created identifiers like retail, salesPrice, unitCost, and inStock because of my past experience. However, my instructor gave examples of code with identifiers like cost. Now, I don't want to waste my time nitpicking something that is a waste of time. I really just want to understand.

Any advice, suggestions, or other pearls of wisdom (as I do not count as swine, these are safe to dispense )?

Disclaimer: The author of this post makes no claims, implied or otherwise, as to her ability to understand anything but the simplest of answers. Further, the author of this post has no programming background whatsoever and has taken one Java Programming class which was 9 weeks long. She does want to learn, so please teach patiently.
Joe Ess

Joined: Oct 29, 2001
Posts: 9168

An identifier should be 'just right'. Not so long that you get tired typing it, but long enough to be unique and understood.
For example, if you have only one value that is a cost, as your instructor probably did, 'cost' is probably Good Enough. If you are working on code that deals with wholesale, retail, discounted and sale costs, you will need more explicit identifiers.
One-letter names ('i' or 'x') are Good Enough for temporary values like loop indexes that have no other meaning.

[How To Ask Questions On JavaRanch]
Jay Damon
Ranch Hand

Joined: Jul 31, 2001
Posts: 282
The most important criterion (IMO) is to think how your class, field and method names will read in your code. Well-chosen, meaningful identifiers will effectively self-comment the actual code minimizing the need for
additional code documentation. Good code should read almost like English. If one word is adequate to represent something, then that is what you should use. Otherwise, add additional descriptive words.

That said, my rules of thumb for naming are these:

1) Use the terminology associated with your domain (business environment). If your business uses the term "stock" for "inventory" then that is what your code should use. I attempt to code such that, if a business analyst looks at my code, he/she can readily make sense of it (without necessarily understanding the particulars of the code).

2) Identifiers should be exactly what they represent. Avoid ambiguity. This goal is not always achieved in the first iteration but the great advantage of modern IDEs is that you can easily refactor/rename to do so.

3) Identifiers should rarely be more than 3 words, not counting "get" and "set" for method names.

4) Identifiers should ideally be 1 or 2 words. Keep it short (but within reason).

5) Avoid using long words in identifiers. I try to avoid words over 8 characters in length.

Don't think you have to get it right the first time! I've been coding for some 27 years now and I still frequently change my mind regarding the names I have chosen. For that reason I love the refactor options in Eclipse/RAD!
Robin Lane
Ranch Hand

Joined: Apr 30, 2008
Posts: 76
Joe and Jay, thank you! Wonderful advice, and I really appreciate it. It makes sense, its easy to understand, and simple to follow.

It is sorta covered in the JavaRanch Style Guide.
subject: Identifiers: Inscrutable versus A Little Longer?
It's not a secret anymore!