Many years ago I had to try to debug a memory manager written by a really talented software engineer, with an interesting take on naming things…
-
He referred to blocks of memory as “cookies”.
-
He had a temporary variable named “handy” because it was handy to have around.
-
He had a second temporary variable that referenced the first one that he called “son_of_handy”.
-
If corruption was detected in a block of memory then it would set the flag “shit_cookie_corrupt”.
-
If too many cookies were corrupt then the system would halt by calling the function “oh_shit_oh_shit_oh_shit”.
I like him already
To be honest I’d like to see his resume, kinda wanna hire him
I will keep this legacy alive within my code
proposal to rename exit() to oh_shit_oh_shit_oh_shit()
-
Naming things is one of the two hardest problems in computer science. The other one is cache coherency and off by one errors.
Long, descriptive names are great! That’s how APIs like CNLabelContactRelationYoungerCousinMothersSiblingsSonOrFathersSistersSon make your code look so clean!
I’m glad you provided a link, because I would not have believed you otherwise. Take my upvote.
Hah, I (a Sr developer at the time) once built an entire mapping layer in our ETL system to deal with the fact that our product had long and expressive names for every data point but our scientists used statistical tools that had no autocomplete and choked on variable names longer than 32 chars so they named everything in like 8 chars of disemvoweled nonsense.
Hey, sometimes we put a little effort into our acronyms. I published a component named UTI and it was too late to change it by the time management caught on.
U nd to rembr tht mny snr devs grw up prgrmng on old hrdwr tht ddn’t hv mch mmry & oftn th lang ony allwd shrt var nms anywy. Also thy wr th gen of txtspk fr smlr rsns.
Yngr snr devs pckd up bd hbts frm tht gen.
And here’s a sentence that’s not squashed to cleanse your palettes / give a sigh of relief because I figure if I need a break from typing like that, you need a break from reading it.
Nmng thngs s hrd.
Does anyone have any good advice on variable naming? Here’s some of my rules I try to live by:
- camelCase
- use prefixes
- prefixes should be one word followed by an underscore.
- 10 character limit or 3 word limit, not counting the prefix
- functions should be prefixed with the file in which they’re defined, ie
utils_FooBar
- file names should be one word
- Start Bools with
is
- Don’t use
not
in bool names.- This has farther-reaching implications that will keep you from making confusing code most of the time (I’m sure this will be controversial, but it works no matter what they say)
- start output with
_
- Globals should be
g_VARIABLENAME
- use the least amount of words possible
- but being too verbose can draw attention - use this to aide in readability
calc_ImportantValueThatWillDecideTheUsersView
is better thancalc_SumYears
if the variable is more important than the others.
- Even the greatest variable names are not replacements for documentation
- Even the most readable code is not replacement for documentation.
- Force yourself to love documentation.
Edit: I realize I was speaking about function-naming with the prefix stuff.
For variables, I still use prefixes, but for variable type. Even if you define the variables as types, it’s still incredibly useful. For instance,
a string is
s_MyName
,enumerable is
e_MyType
,A number is int or double or whatever
i_MyAge
ord_MyWeight
This might be obvious for custom objects, but I’d still do it like this
p_Person
orper_Person
.Seriously it does make a huge difference
Not sure if you’re trolling or serious.
Sorry, I’m serious. These are things I have picked up from 18 years in the industry.
Also, can somebody explain this to sysadmins when it comes to naming computers?
I mean programmers can have some weird naming conventions, but I’ve never met an adult professional programmer who named all his variables after planets or Harry Potter characters or just called everything stuff like ADMUTIL6 or PBLAB03T1 or PBPCD1602.
Harry Potter characters is a perfectly reasonable server naming scheme. Server names should be easily recognisable but not tied to any particular service/project/function on that machine (as the server may be used for other things later etc)
See RFC 1178: https://www.rfc-editor.org/rfc/rfc1178
August 1990
So?