I admit I use one letter variable names in my code. But which names? Here's what I use in for
loops:
# rg 'for \(let . ?=' # | perl -pe 's/.*let //g' | perl -pe 's/=.*//g' # | sort | uniq -c | sort -nr | head 509 i 132 x 122 y 118 r 57 t 53 q 47 j 43 s 31 e 14 k
My naming conventions:
- i, j, k: generic index
- x, y, z, w: coordinates
- q, r: col/row grid coordinates
- r: region number
- r: range or radius
- t: triangle number
- t: time index
- s, e: sides/edges of a polygon
- w, h: width/height
Outside of for
loops, rg 'let . ?= | grep -v for' finds that I also use these conventions:
- a, b: endpoints of a range or line segment
- a, b, c: equation for a line, or quadratic formula
- v: generic value
- p: point
- t: time
- d: distance
- d: reference to svg <path> d= attribute
- g: reference to svg <g> element
If I were working in a team I'd follow their naming conventions, but for the most part I am writing the code for myself, so I'm ok with short variable names like these. The common objection is that I won't understand the code six months later, but I haven't found that to be an issue. These are all local variables inside a function, and I tend to use the same conventions across projects.
[2024-12-16] Also see A Dictionary of Single-Letter Variable Names for Haskell code.
Labels: code
3 comments:
Subscribe to:
Post Comments
(
Atom
)
This seems like a good practice to me.
Variable name length should be proportionate to scope - a loop index variable has limited scope, and can and should be short.
Parameter names should arguably be longer, in that they should describe clearly the role of the parameter in the function to make it easier for clients to use the function correctly without looking at the source code. Same goes for instance variables.
Naming conventions are good. Most of the time I'd insist on being able to grasp where things are coming from. If you see at one glance where p is created and where it's consumed I wouldn't make a fuzz about it.
If it's unnecessary though and a more descriptive var name wouldn't make lines unbearably long and cluttered: make it so right away :)
Loop iterators are typically not important, they're just a vehicle to get you from A to B. Single letters are fine. :)
Post a Comment