プログラムは猫が動かしてる?

誰かがプログラムは猫が動かしていると表現した。
そうすると、あるアプリケーションは、猫が数匹、協調して動かしていることになる。
その猫をリアルに描いていくのがプログラマの仕事だ。
寝不足でも、空腹でも描けない。内線が割り込むと描けない。
音楽がないと、コーヒーがないと描けないって人だっている。

さて、ひさしぶりにプログラマみたいなひとりごとでも書いてみよう。

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から書くより、自動生成されたものを削るほうが楽で確実ということかな。

トラックバック(0)

このブログ記事を参照しているブログ一覧: プログラムは猫が動かしてる?

このブログ記事に対するトラックバックURL: http://www.spacelogue.com/mt/mt-tb.cgi/64

コメント(2)

下の方のわけの分からない不思議な言葉は
中のネコには通じるネコ語なんでしょうか(´-`)

私もネコ語使いになれる、脳のよさがほしい・・・。

ネコ語ですかねー。ちょっと方言きつい感じの。
英語を話せる人が、普通に英語が話せるように、僕らもネコ語を使えることはごく当たり前のことなんですねー。
つまり実はそれほど脳を使っていないんじゃないかと・・。

コメントする

[ad]