
In some cases, the `rule.adoc` at root of a rule is never included anywhere and thus is dead code. It's a maintenance cost by itself, but also it misses opportunities to inline code that seems used by two documents when in fact only one document is actually rendered. And this missed opportunity, in turn, stops us from applying the correct language tag on the code samples.
55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
== Why is this an issue?
|
|
|
|
For maximum reusability, methods should accept parameters with as little specialization as possible. So unless specific features from a child class are required by a method, a type higher up the class hierarchy should be used instead.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,java]
|
|
----
|
|
public void printSize(ArrayList<Object> list) { // Collection can be used instead
|
|
System.out.println(list.size());
|
|
}
|
|
|
|
public static void loop(List<Object> list) { // java.lang.Iterable can be used instead
|
|
for (Object o : list) {
|
|
o.toString();
|
|
}
|
|
}
|
|
----
|
|
|
|
=== Compliant solution
|
|
|
|
[source,java]
|
|
----
|
|
public void printSize(Collection<?> list) { // Collection can be used instead
|
|
System.out.println(list.size());
|
|
}
|
|
|
|
public static void loop(Iterable<?> list) { // java.lang.Iterable can be used instead
|
|
for (Object o : list) {
|
|
o.toString();
|
|
}
|
|
}
|
|
----
|
|
|
|
=== Exceptions
|
|
|
|
Parameters in non-public methods are not checked, because such methods are not intended to be generally reusable. ``++java.lang.String++`` parameters are excluded, because String is immutable and can not be always substituted for more generic type. Parameters used in any other context than method invocation or enhanced for loop are also excluded.
|
|
|
|
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[]
|