
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
59 lines
1.6 KiB
Plaintext
59 lines
1.6 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Looking at the set of methods in a class, including superclass methods, and finding two methods or fields that differ only by capitalization is confusing to users of the class. It is similarly confusing to have a method and a field which differ only in capitalization or a method and a field with exactly the same name and visibility.
|
|
|
|
|
|
In the case of methods, it may have been a mistake on the part of the original developer, who intended to override a superclass method, but instead added a new method with nearly the same name.
|
|
|
|
|
|
Otherwise, this situation simply indicates poor naming. Method names should be action-oriented, and thus contain a verb, which is unlikely in the case where both a method and a member have the same name (with or without capitalization differences). However, renaming a public method could be disruptive to callers. Therefore renaming the member is the recommended action.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,text]
|
|
----
|
|
public class Car{
|
|
|
|
public DriveTrain drive;
|
|
|
|
public void tearDown(){...}
|
|
|
|
public void drive() {...} // Noncompliant; duplicates field name
|
|
}
|
|
|
|
public class MyCar extends Car{
|
|
public void teardown(){...} // Noncompliant; not an override. It it really what's intended?
|
|
|
|
public void drivefast(){...}
|
|
|
|
public void driveFast(){...} //Huh?
|
|
}
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,text]
|
|
----
|
|
public class Car{
|
|
|
|
private DriveTrain drive;
|
|
|
|
public void tearDown(){...}
|
|
|
|
public void drive() {...} // field visibility reduced
|
|
}
|
|
|
|
public class MyCar extends Car{
|
|
@Override
|
|
public void tearDown(){...}
|
|
|
|
public void drivefast(){...}
|
|
|
|
public void driveReallyFast(){...}
|
|
|
|
}
|
|
----
|
|
|