Packing Information into Names
Choose specific words
def GetPage(url)
doesn’t say much. Maybe FetchPage()
or
DownloadPage()
is more specific?
int Size()
- is this size the height of an object, numbeer of
elements or memory footprint? Maybe Height()
, NumNodes()
or
MemoryBytes()
is better.
A thesaurus can be useful.
send
-> deliver, dispatch, announce, distribute, route
find
-> search, extract, locate, recover
start
-> launch, create, begin, open
make
-> create, set up, build, generate, compose, add, new
Avoid Generic Names Like tmp and retval
tmp
and retval
names don’t pack much meaning; use names that
describe the variable’s value.
tmp
is suitable where its short-lived and its important to indicate
that the variable is indeed temporary.
Attaching Extra Information to a Name
If variable is a measurement, add units as a suffix. This is exactly what Prometheus recommends for metric naming as well.
If you’re dealing with data that needs to be cleaned before use, add
this information to the name. E.g. comment
-> unescaped_comment
,
data
-> data_urlenc
.
Short names are good for short scope. The names of global variables should carry enough information to make it clear what they are.
As for abbreviations, e.g. str
, doc
, eval
are OK as most people
are familiar with them. But BEManager
isn’t clear that it means
BackEndManager
.
Likewise, unneeded words should be removed. Don’t say
ConvertToString()
, ToStr()
is clear enough.
Use Name Formatting to Convey Meaning
Different formats for different entities.
CamelCase
for class names.
lower_separated
for variable names.
kConstantName
for constants.
offset_
for class member variables.
MACRO_NAME
for macros.
DatePicker()
for constructor functions (new DatePicker()
).
pageHeight()
for ordinary functions.