59 lines
1.1 KiB
Plaintext
59 lines
1.1 KiB
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) {
|
|
// ...
|
|
}
|
|
----
|
|
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|