Index: [Article Count Order] [Thread]

Date:  Thu, 28 Sep 2000 19:30:04 +0900
From:  tetsuya@....jp
Subject:  [XP-jp:00974] Re: MemberList 	更新
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <97BA340C0480D411BDA800062939A1890607B9@....jp>
Posted:  Thu, 28 Sep 2000 19:28:10 +0900
X-Mail-Count: 00974

栗原です。

素モードです。

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

> > 1.ファイルに同じアドレスの行が複数あった場合。重複は
> > 別々じゃなくて、1つのMemberってしちゃえばいいのよね。
> >

後からメールするといいながら、帰宅してから返事を書こうと
思っていたのですが、コーディングに入られてしまったようなので、
取り急ぎ、気になった点だけ。

メンバリストって、今現在はメンバのメールアドレスだけですが、
別ストーリにメンバの配信状態も管理するような話がありませんでし
たっけ?

その場合も、最初に読み込まれたメンバ情報が優先されるみたいな制
約が明確であれば問題ないのですが。

> 今のままだと、addメソッドのほうで、同じアドレスをもったMember
> インスタンスをaddしようとすると、IllegalArgumentExceptionが
> 発生しちゃうわ。でも、これはコンストラクタがaddを使うところ
> を次のように変えればいいわね。
> 
>                 Member member = new Member(mailAddress);
>                 try{
>                     add(member);
>                 }catch(IllegalArgumentException e){
>                     continue;
>                 }

例外が発生することが分かっているならば、明示的に対処したほうが
良いと思います。

ここは、addメソッドを変更して、、、

public void add(Member aMember) {
    if (contains(aMember))
        return;

    members.add(aMember);
}

とした方がシンプルだと思います。
# テストケースも変更しないと。

と思って、送信しようとしたのですが、addにやらせるのは変ですね。
折角containsメソッドがあるなら、それでチェックしてからaddすれ
ばいいはず(自分に言い聞かせてます。)

    Member member = new Member(mailAddress);
    
    if (contains(member))
        continue;    

    add(member);

として、addの実装はそのままとか。

> それと、[XP-jp:00972]で三郎君が指摘してくれたとおり、上記コ
> ードのすぐ下の部分は、次のように修正するわ。
> 
>         } catch (FileNotFoundException e) {
>             throw new FileNotFoundException();
> じゃなくて
>         } catch (FileNotFoundException e) {
>             throw e;
> こうね。
> 
> それじゃ、コンパイルして、テストをします。
> 
> はい、テスト通りました。

Configに習って、BadMemberFileExceptionクラスに置き換えたい
のですがパッケージを別にしたほうがシンプルに収まるかなと思っ
ています。
ちょっと今すぐ思いつかないので、後回し!すみません。

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