44 lines
912 B
Plaintext
44 lines
912 B
Plaintext
``++enum++``s are generally thought of as constant, but an ``++enum++`` with a ``++public++`` field or ``++public++`` setter is non-constant. Ideally fields in an ``++enum++`` are ``++private++`` and set in the constructor, but if that's not possible, their visibility should be reduced as much as possible.
|
|
|
|
|
|
== Noncompliant Code Example
|
|
|
|
----
|
|
public enum Continent {
|
|
|
|
NORTH_AMERICA (23, 24709000),
|
|
// ...
|
|
EUROPE (50, 39310000);
|
|
|
|
public int countryCount; // Noncompliant
|
|
private int landMass;
|
|
|
|
Continent(int countryCount, int landMass) {
|
|
// ...
|
|
}
|
|
|
|
public void setLandMass(int landMass) { // Noncompliant
|
|
this.landMass = landMass;
|
|
}
|
|
----
|
|
|
|
|
|
== Compliant Solution
|
|
|
|
----
|
|
public enum Continent {
|
|
|
|
NORTH_AMERICA (23, 24709000),
|
|
// ...
|
|
EUROPE (50, 39310000);
|
|
|
|
private int countryCount;
|
|
private int landMass;
|
|
|
|
Continent(int countryCount, int landMass) {
|
|
// ...
|
|
}
|
|
----
|
|
|
|
|