The definitions of constant expressions should be related exactly when the values they express are also related.
Noncompliant Code Example
In this noncompliant code example, OUT_STR_LEN
must always be exactly two greater than IN_STR_LEN
. These definitions fail to reflect this requirement:
public static final int IN_STR_LEN = 18; public static final int OUT_STR_LEN = 20;
Compliant Solution
In this compliant solution, the relationship between the two values is represented in the definitions:
public static final int IN_STR_LEN = 18; public static final int OUT_STR_LEN = IN_STR_LEN + 2;
Noncompliant Code Example
In this noncompliant code example, there appears to be an underlying relationship between the two constants where none exists:
public static final int VOTING_AGE = 18; public static final int ALCOHOL_AGE = VOTING_AGE + 3;
A programmer performing routine maintenance may modify the definition for VOTING_AGE
but fail to recognize the resulting change in the definition for ALCOHOL_AGE
.
Compliant Solution
In this compliant solution, the definitions reflect the independence of the two constants:
public static final int VOTING_AGE = 18; public static final int ALCOHOL_AGE = 21;
Bibliography
4 Comments
David Svoboda
I would completely remove the Applicability section for this & similar rules, when its text is so devoid of content.
Dean Sutherland
I agree with David.
Yitzhak Mandelbaum
done. shall i remove these comments?
David Svoboda
Thanks, Yitzhak!