Normalerweise kommt es in solchen Fällen im Rahmen von mehr sinnvolle Logik, sagen wir einige Suche oder Manipulation über einige der iterierten 'for'-Objekte in Frage, so dass ich in der Regel die funktionale Ansatz verwenden:
public Object searching(Object[] types) { // Or manipulating
List<Object> typesReferences = new ArrayList<Object>();
List<Object> typesReferences2 = new ArrayList<Object>();
for (Object type : typesReferences) {
Object o = getByCriterion(typesReferences2, type);
if(o != null) return o;
}
return null;
}
private Object getByCriterion(List<Object> typesReferences2, Object criterion) {
for (Object typeReference : typesReferences2) {
if(typeReference.equals(criterion)) {
// here comes other complex or specific logic || typeReference.equals(new Object())
return typeReference;
}
}
return null;
}
Große Nachteile:
- etwa doppelt so viele Zeilen
- höherer Verbrauch von Rechenzyklen, d.h. aus algorithmischer Sicht ist es langsamer
- mehr Schreibarbeiten
Die Vorteile:
- das höhere Verhältnis zur Trennung von Belangen aufgrund der funktionalen Granularität
- der höhere Anteil an Wiederverwendbarkeit und Kontrolle von Such-/Manipulationslogik ohne
- die Methoden sind nicht lang, daher sind sie kompakter und leichter zu verstehen
- höherer Grad der Lesbarkeit
Sie behandelt den Fall also einfach auf eine andere Art und Weise.
Grundsätzlich eine Frage an den Verfasser dieser Frage: Was halten Sie von diesem Ansatz?