|
|
|
|
|
by RealityVoid
3693 days ago
|
|
I disagree. There are a few cases where a number is more expressive - I even think MISRA has exemptions for 1, 0 and FF. But in most cases what I want is not the number, it's the _meaning_ of the number. Be it the Command ID, ram block Address or whatever it is. Generally, having code sprinkled with magic numbers is pretty shitty. In my view: a = a<<18;
a |= b<<8;
a |= c;
is a kosher use of numbers. But case(ChoiceID):
switch 1:
/* Do somethin'*/
break;
switch 26:
/* Do somethin' else*/
break;
default:
break;
is not. Generally, numbers are ok as long as you express mathematical ideas nut not ok when you express logical ideas. |
|
Even your "switch 26" isn't always bad. If the value only occurs in exactly that one place in your code, it's probably better to use a comment in plain English. A comment is more readable than DO_SOMETHIN_ELSE and, normally, would go right in the place where you actually use the value.