Index: [Article Count Order] [Thread]

Date:  Thu, 28 Sep 2000 13:19:03 +0900
From:  tetsuya@....jp
Subject:  [XP-jp:00972] Re: MemberList 	更新&テストツール追加
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <97BA340C0480D411BDA800062939A1890607B8@....jp>
Posted:  Thu, 28 Sep 2000 13:17:04 +0900
X-Mail-Count: 00972

栗原です。

三郎さんモード。

firo@....jp [mailto:firo@....jp] wrote:

> (タスクカード)
> ConfigTestについて、テストファイルをテスト終了後に削除する
> ようにする。MemberListTest V1.2を参考。
(中略)
> (タスクカード)
> Configファイルについて、前後に空白のある行のテストを追加する。
> 
> > なんか同じようなコードを書いているけど、とりあえずは先に進もうかな。

おっと、花子さんのデスクにタスクが張られているぞ。
他のペアが見やすいように、ボードに張り出しておこう。
# やまのさんのアイデアをいただいて、TODO.txtをCVSで管理したいと思い
# ます。
# 現在CodingStandard.txtが置かれているディレクトリと同じ場所でいいです
# よね。
# 実際にコミットするのはちょっと待ってください。

> 1.testLoadCorrectMemberList1について
> 
> ファイルから復元したMemberの数が、size()で正しく
> 取得できるか確認したほうがいいと思うの。それと、
> 本当に2件のmemberしかmemberListに登録されて
> いないかもテストしたほうがよくないかしら、つまりこん
> なふうに、、
> 
>     public void testLoadCorrectMemberList1() {
>         final String fileName = "correctMemberList1";
>         try {
>             createCorrectMemberList1(fileName);
> 
>             MemberList memberList = new MemberList(fileName);
> 
>             assertEquals(2,memberList.size());             /* 
>  add 1  */
>             assertEquals(firstMember, memberList.get(0));
>             assertEquals(secondMember, memberList.get(1));
>             try{                                              
>        /*  add 2 star */
>                 memberList.get(2);
>                 fail("Should raise an IndexOutOfBoundsException");
>             }catch(IndexOutOfBoundsException e){
>                 assert(true);
>             }                                                 
>         /*  add 2 end */
>         } finally {
>             deleteMemberList(fileName);
>         }
>     }

あ、テストが追加されてる!さすが花子さん。

> add2のところで、getメソッドがインデックスの有効範囲を超えた場合
> は一応IndexOutOfBoundsExceptionをthrowする、としたけれど、例外
> については三郎君と話あったほうがいいわね。Configと同じように、独
> 自のExceptionを返す、という考え方もあるんじゃないかしら。

# チェックされる例外を分かりやすい例外の名前に変換するのは良いとし
# て、実行時例外もチェックされる例外に変換していくと、際限がなくな
# ってしまう気がします。

# これとは別の問題で、そもそも境界チェックをしなくても良いように、
# ArrayListではなく、Iteratorを返すことのできるLinkedListなどに置き
# 換えるのも手かもしれません。
# 実際の動作で、「何番目のインデックスの会員」というように使われ
# ませんよね?

> 4.MemberListファイルがない場合
> 
> コンストラクタの引数で与えられたMemberListファイルの名前に対応
> するファイルが存在していなかった場合のテストをしなきゃ。この場合は
> コンストラクタから何らかのExcepitonをthrowすることにしよう。例外は、
> っと、これは三郎君と要相談だわ。ここでは一応FileNotFoundをthrow
> することにするわ。
(中略)
> 修正は簡単ね。今まで、FileNotFoundExceptionをRuntimeException
> に変換して投げていたところをそのまま投げるようにすればいいの
> ね。

えーと次は、、、花子さんは何らかの例外を定義すべきといっているみたい
だ。確かにその通りだけど、Configみたいに何らかのパッケージとして切り
分けないと、Configみたいには処理できないんだよなぁ。

>
>        } catch (FileNotFoundException e) {
>            throw new FileNotFoundException();  /*修正*/

これは、暫定的につくったコードだから気にしなくいいのかもしれないけど、
同じ例外をスローするなら

} catch (FileNotFoundException e) {
    throw e;

とすべきだろうね。新しく例外をスローしてしまうと、スタックトレース情
報がリセットされてしまうから。

> 花子としては、次の点を引き続き検討してみたいのだけど。
> 
> 1.ファイルに同じアドレスの行が複数あった場合。重複は
> 別々じゃなくて、1つのMemberってしちゃえばいいのよね。
> 2.引数なしのコンストラクタは本当にいるのかしら。削除
> してもいいのじゃないかしら?
> 3.2がYesだったらだけど、addメソッドもpublicにしておく
> 必要ないと思うのだけれど。privateでいいんじゃない?

# ちょっと時間がないのでまた別メールで。

> 私も今まで全文を載せるようにしていましが、他の方はどうでしょう?
> HTMLのCVSで最新は見れるので、コミットした場合は全文はメール
> には載せないようにしましょうか?コミットしない場合は、メールに載せる
> というのはどうでしょう?

了解しました。

---
Tetsuya Kurihara
tetsuya@....jp