Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Wiki Markup
Immutable objects should be {{const}}\-qualified.  Enforcing object immutability using {{const}}\-qualification helps ensuresensure the correctness and security of applications.  ISO/IEC PDTR 24772 \[[ISO/IEC PDTR 24772|AA. C References#ISO/IEC PDTR 24772]\], for example, recommends labeling parameters as constant to avoid the unintentional modification of function arguments.  [STR05-A. Use pointers to const when referring to string literals] describes a specialized case of this recommendation. 

Adding const qualification may propagate through a program; as you add const qualifiers, still more become necessary. This phenomenon is sometimes called "const - poisoning." Const - poisoning can frequently lead to violations of EXP05-A. Do not cast away a const qualification. While const qualification is a good idea, the costs may outweigh the value in the remediation of existing code.

Macros, or an enumeration constant, may also be used instead of a const-qualified object. DCL06-A. Use meaningful symbolic constants to represent literal values in program logic describes the relative merits of using const-qualified objectobjects, enumeration constants, and object-like macros. However, adding a const qualifier to an existing variable is a better first step than replacing the variable with an enumeration constant or macro, because the compiler will issue warnings on any code that changes your const-qualified variable. Once you have verified that a const-qualified variable is not changed by any code, you may consider changing it to an enumeration constant or macro, as best fits your design.

...