誰かがプログラムは猫が動かしていると表現した。
そうすると、あるアプリケーションは、猫が数匹、協調して動かしていることになる。
その猫をリアルに描いていくのがプログラマの仕事だ。
寝不足でも、空腹でも描けない。内線が割り込むと描けない。
音楽がないと、コーヒーがないと描けないって人だっている。
さて、ひさしぶりにプログラマみたいなひとりごとでも書いてみよう。
HibernateでPOJOクラスを書いていると、Serializableクラスのequals(),hashCode()メソッドのオーバーライド実装を必死に書かなければならない状況になった。こりゃつらいなと思っていると、commons-lang-2.1.jarを発見した。
なんと、あんなに苦労して書いてたのにEclipseで右クリックするだけで全部書いてくれるやないか!
Commonclipse、えらすぎ。
public int hashCode() { return new HashCodeBuilder( 1005201205, 1767450647 ) .appendSuper( super.hashCode() ) .append( this.temporary_password ) .append( this.user_id ) .append( this.locked ) .append( this.user_password ) .append( this.last_login ) .append( this.last_password_changed ) .append( this.clinic ) .append( this.login_try_count_today ).toHashCode(); }
でも、 Hibernateのドキュメントには、
We recommend implementing equals() and hashCode() using Business key equality. Business key equality means that the equals() method compares only the properties that form the business key, a key that would identify our instance in the real world.
って書いてあった。ビジネスキーだけでいいんですな。
そうなると、これで十分ということかね。
public int hashCode() { return new HashCodeBuilder( 1005201205, 1767450647 ) .appendSuper( super.hashCode() ) .append( this.user_id ) .append( this.clinic ).toHashCode(); }
ま、appendSuperはいらんか。
まだちゃんと動かしていないけど、短くてシンプルでなんだかよさげだ。
1から書くより、自動生成されたものを削るほうが楽で確実ということかな。
下の方のわけの分からない不思議な言葉は
中のネコには通じるネコ語なんでしょうか(´-`)
私もネコ語使いになれる、脳のよさがほしい・・・。
ネコ語ですかねー。ちょっと方言きつい感じの。
英語を話せる人が、普通に英語が話せるように、僕らもネコ語を使えることはごく当たり前のことなんですねー。
つまり実はそれほど脳を使っていないんじゃないかと・・。