Je suis au milieu de QA'ing un tas de code et j'ai trouvé plusieurs cas où le développeur a un DTO qui implémente Comparable. Ce DTO contient 7 ou 8 champs. La méthode compareTo a été mis en œuvre sur un seul terrain:Devrais-je m'inquiéter de cette implémentation compareTo/equals/hashCode?
private DateMidnight field1; //from Joda date/time library
public int compareTo(SomeObject o) {
if (o == null) {
return -1;
}
return field1.compareTo(o.getField1());
}
De même, la méthode equals est surchargée et se résume essentiellement à:
return field1.equals(o.getField1());
et enfin la mise en œuvre de la méthode hashcode est:
return field1.hashCode;
field1
ne devrait jamais être nul et sera unique à travers ces objets (c.-à-d. Nous ne devrions pas avoir deux objets avec le même field1
). Donc, les implémentations sont cohérentes ce qui est bon, mais devrais-je être préoccupé par le fait qu'un seul champ est utilisé? Est-ce inhabituel? Est-ce que cela risque de causer des problèmes ou de dérouter les autres développeurs? Je pense au scénario où une liste de ces objets est passée et un autre développeur utilise une carte ou un ensemble de somesort et obtient un comportement inhabituel de ces objets. Toutes les pensées ont apprécié. Merci!
Sur une tangente ... Les utilisateurs de [Joda-Time] (http://www.joda.org/joda-time/) doivent noter que le champ en question est d'un type (['DateMidnight'] (http://www.joda.org/joda-time/apidocs/org/joda/time/DateMidnight.html)) qui est maintenant obsolète et devrait être évité. Le type approprié serait maintenant ['DateTime'] (http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html), avec un appel à [' withTimeAtStartOfDate'] (http : //www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html#withTimeAtStartOfDay--) si nécessaire. –