Avoid the use of numerical values or "magic numbers" in code when possible. Appropriately named symbolic constants make code more readable rather than checks against a specific number. If clarify the intent of the programmer. In addition, if a specific number needs to be changed reassigning a symbolic value is much easier than replacing a specific number in the code because each case has to be checked specifically.
Non Compliant Code Example
Code Block | ||
---|---|---|
| ||
if (age >= 18) { takevote(personID); } ... if (age <= 18) { checkSchoolEnrollment(personID); } |
Compliant Solution
Code Block | ||
---|---|---|
| ||
enum { ADULT_AGE=18 }; ... if (age >= ADULT_AGE) { takevote(personID); } ... if (age <= ADULT_AGE) { checkSchoolEnrollment(personID); } |
...
DCL00-A. Declare immutable values using const or enum
Risk Assessment
Mistakes regarding numeric values can cause unintended consequences if changes are not made uniformly
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
EXP00-A | 1 (low) | 1(unlikely) | 2 (medium) | P2 | L3 |
References
Source: http://www.doc.ic.ac.uk/lab/cplus/c++.rules/chap10.html