What should I name a variable that has units with a fixed point?
int herpLimitLo_psig2 = 6000; // 60.00 psig
int derpLimitLoPsigwithtwodigits;
int herpLimitHiPsigfixedtwo;
int herpLimitHi_psig_timesOneHundred;
Apparently I suck at naming things.
Just herpLimitLo
is enough.
Variable names are expensive; you can’t make them too long or your code will be unreadable (after all, excessive repetition of excessively redundant information excessively causes excessive exceeding of the human brain’s excessiveness processing systems if used excessively), but you do want them to be as descriptive as possible. This means that you should name them after their meaning; things like expected value range or value semantics can be expressed through other language features in almost every programming language.
For example, in C, you can use typedef
; even if the variable’s “real” type is still int
, writing it as fixed_2 herpLimitLo
suggests what it is. In a language with more sophisticated type systems, whether dynamic or static, you can define an actual type for your base-2 fixed-point numbers. Depending on the language, you can then even overload common numeric operations to work transparently with such fixed-point numbers.
Some languages will even refuse to compile your code if you do stupid things like trying to directly assign a float
to a fixed_2
, provided you do in fact define them as different types – no naming convention in the world can do that for you.
2
what about naming the variable according to its meaning in the current context? You should avoid naming variables after their type.
The only important information you should be able to retrieve easily is the interpretation factor. In most cases, there will be only one, so you can define a constant and use it everywhere you need it (and avoid putting it in the variable names).
If you are using a lot of different precisions in your computations, you should use a specific type for fixed point computations.
At least in debug mode, this type should be able to give you the precision of a given variable, and prevent you to do stuff like adding two numbers with different precisions (at least in debug mode). And so you are also free to give your variable a short meaningful name.
example in python:
speed = FixedPoint(precShift=5, val=64) # --> 2 m/sec
duration = FixedPoint(precshift=2, val=5) # --> 2.5 sec
length = speed * duration # precShift=7, value=320
2