Remove probably unused hash() and equals()
I searched for occurrences of Attributes or AttributesSource together with Map/Set
-
Contributor
@BZoennchen @benjaminaaron wisst ihr, ob diese
hashCode()
undequals()
gebraucht werden?Früher wurden die vllt verwendet um zu schauen ob sich Szenarios geändert haben. Jetzt wird das ja über die JSON Strings gemacht.
Ich hab gesucht im ganzen Quellcode und die Klassen
Attributes
oderAttributesSource
kommen nicht im Zusammenhang mitSet
oderMap
vor.Ich würde sie gerne loswerden, weil das nur Fehlerpotential ist. Z.B. wenn Felder dazukommen. Und man vergisst das anzupassen.
-
Maintainer
@schoettl Mir ist nicht bekannt ob diese noch benötigt werden ich glaube nicht. Sie zu haben finde ich aber nicht falsch. Wegen mir können wir diese löschen. Man bedenke, dass jede Attribute im scenario package eine solche Implementierung besitzt und somit würden wir alle diese löschen. Man könnte Sie löschen aber sollte man dann nicht in der equals der Topography eine UnsupportedEx.. werfen?
@michael-seitz @dietrich was meint ihr?
-
Contributor
Ich wäre echt stark für löschen:
- Wer weiß, welche Felder in die Methoden reingehören?
id
? - Wer weiß, wie es implementiert sein muss?
xx.getClass() == Xx.class
vs.instanceof
? - Wer weiß, wo/wie die Methoden gebraucht werden?
- Wer weiß, ob sie gebraucht werden?
Es geht ja auch darum, dass neue Entwickler richtig weiterentwickeln können. Und dass der Code nicht verrottet.
Zum Beispiel die
id
ist manchmal dabei, manchmal nicht. Wenn man sie mit rein nimmt, dann kann man eigentlich auch die Referenzen vergleichen (oder das Standardequals()
verwenden).Ich finde als Java-Entwickler, darf man nie blind davon ausgehen, dass
hashCode()
undequals()
mit allen Feldern so implementiert sind wie man es braucht. Insofern würde ich die Implementierungen ersatzlos löschen. Wenn's wirklich wieder jemand braucht, wird er's schnell merken. Und dann könnte man z.B. auch in derAttributes
Basisklasse beides so implementieren, dass das serialisierte JSON verglichen wird.Ich hab mal alle Methoden automatisch generieren lassen, und da gibt es schon Probleme (abgesehen von den Zeilenumbrüchen!): diffs.diff Auskommentierte Checks bei manchen Feldern, fehlende Implementierungen,
id
,instanceof
, ...Die Spec fordert auch nicht, dass equals Felder vergleicht. Es kommt immer auf den Anwendungsfall an: https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)
- Wer weiß, welche Felder in die Methoden reingehören?
-
mentioned in merge request !6 (merged)