Index: [Article Count Order] [Thread]

Date:  Sun, 26 Nov 2000 05:44:26 +0900
From:  "Oota" <oota@....jp>
Subject:  [XP-jp:01188] Re: Test First Programming でも、デバッグは必要ですね。
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <000001c05722$2ca3a2c0$010400c8@Ra20>
In-Reply-To:  <002301c056fa$ab2957c0$0200a8c0@mamoru>
Keywords:  XP
Posted:  Sun, 26 Nov 2000 05:56:25 +0900
X-Mail-Count: 01188

 早稲田大学の太田です。

> 単なるテスト用メソッドなのでそこまでしなくてもいいか
> な?とも感じます。
> 実装で equals メソッドをオーバーライドする必要があるときは、
>
>     public boolean equals(Object anObject) {
>         if (this == anObject) {
>             return true;
>         } else if (anObject == null) {
>             return false;
>         } else if (getClass() != anObject.getClass()) {
>             return false;
>         }
>
>         Member otherMember = (Member)anObject;
>         return mailAddress.equals(otherMember.getMailAddress());
>     }
>
> こんな感じの良く知られたイデオムを使う方がいいでしょう。
> # VXPのMember クラスを参考に出させていただきました。
>
>     public int hashCode() {
>         return mailAddress.hashCode();
>     }
>
> で、equals メソッドをオーバーライドしたら、必ず hasCode メソッド
> も実装しておくことが推奨されています。

 書いた後に自分のあのコードが危険だと思い出しました(上記イディオムの
ように弾いておかないと危険)。失礼致しました。Mapなどに入れる場合
hasCodeもオーバーライドしておかないと駄目という話ですよね。

 でも、テスト用のコードにも誤りは結構多いという研究結果は出ていますよ
ね。やっぱりちゃんとしておいた方がよいと思います。

早稲田大学大学院理工学研究科情報科学専攻M2 太田健一郎
e-mail Address oota@....jp
               oota@....jp