為什麼 IDEA 自帶的 equals & hashCode generate 不好
阿新 • • 發佈:2019-01-03
多個member的 java bean,生成的 equals 程式碼基本沒法讀。
有個 plugin 用 spring commons 生成程式碼,spring commons 的 EqualsBuilder 的問題在於……confluence interface。
不知什麼時候開始出現了一批迷信confluence interface的人,各種 method call chain,debug的時候設定個斷點都沒法弄。
尤其是 equals 這種方法,一旦 return false,你經常希望知道具體哪個member not equals,而如果裡面是用了 EqualsBuilder …… 見鬼。
還有一個 Equals and HashCode Generate Deluxe 的 plugin,問題也大概差不多,用了一串的 &&,————好的程式碼要考慮debug時的斷點,和exception裡清楚明白的行號。
另外如果是可繼承的類,這些 generated code 裡面那些 if (o.getClass() == xxx) 統統都是錯的,——這年頭還不讀《Effective Java》的都該吊起來燒死。
官方支援 equals 和 hashCode template 自定義以前,IDEA 需要一個更好的 plugin。