Index: [Article Count Order] [Thread]

Date:  Tue, 29 Aug 2000 00:04:45 +0900
From:  Kaoru Hosokawa <khosokawa@....com>
Subject:  [XP-jp:00782] Member, MemberList,  MemberAuthorization Was:Re: VXP  ストーリー1タスク案
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <B5D0AE05.3165%khosokawa@....com>
In-Reply-To:  <50158B900247D411B8120090CC01C0EC1E058A@....jp>
Posted:  Tue, 29 Aug 2000 00:02:17 +0900
X-Mail-Count: 00782

ホソカワです。

on 2000/08/21 7:32 PM, tetsuya@....jp at tetsuya@....jp wrote:

> 栗原です。
> 
> firo [mailto:firo@....jp] さん wrote:
> 
>> なるほど、確かに差出人の認証を行う必要がありますね。
>> #でないと、誰でもだせるMLになってしまう(それでもいいという
>> 考えもあるやもしれませんが)
>> 
>> これはストーリ1にいれて、別タスクにしましょうか?
> 
> 分かりました。
> 
>> 差出人の認証のところは、先述したとおり、必要だと思います。
>> 簡単なCRCをやって、タスクのイメージを具体化するというの
>> はどうでしょう?
> 
> ストーリ1に関係するであろうクラスの CRC を書いてみました。
> ただし、メール送信部の構造がピンとこないのでどなたかお願いします。
> 
> # Member クラスってメールアドレス以外の情報は何を持っているので
> しょう???
> 
> +---------------------------------------
> | MemberAuthorization
> +---------------------------------------
> | 有効な会員かチェックする   |MemberList
> |                            |Member
> +---------------------------------------
> 
> +---------------------------------------
> | MemberList
> +---------------------------------------
> | 会員リストに追加する       |Member
> +----------------------------|
> | 会員リストから削除する     |
> +----------------------------|
> | 会員情報を取得する         |
> +---------------------------------------
> 
> +---------------------------------------
> | Member
> +---------------------------------------
> | メールアドレスを取得する   |
> +----------------------------|
> | メールアドレスを設定する   |
> +---------------------------------------

「太郎、花子」コンビで書いてみます。

太郎:まずは、テストを書きます。(太郎がキーボードを持っています。)どう?
Memberをクリエイトして、メールアドレスが等しいかどうかチェックしています。

    public void testNewMember() {
        String mailAddress = "aaa@....ccc";
        Member member = new Member(mailAddress);
        assertEquals(member.getMailAddress(), mailAddress);
    }

花子:いいんじゃないの。ただ、コンストラクタ−にメールアドレスを渡しているの
はどうして?setMailAddress()で後から設定すればいいじゃない?

太郎:メンバーはメールアドレスが必須だから、コンストラクタ−のパラメータにし
たの。

花子:なるほど。じゃ、メールアドレスのチェックは?変なメールアドレスはエラー
で返すべきでは?

太郎:変なメールアドレスかどうかのチェックは大変だし、まだ、問題になっていな
いから、後回しにします。いい?じゃ、コンパイルしますね。(もちろん、エラーで
ボロボロ。)さあ、Memberを書こうか?

    class Member {
        private String mailAddress;

        public Member(String mailAddress) {
            this.mailAddress = mailAddress;
        }

        public String getMailAddress() {
            return mailAddress;
        }
    }

(これをコンパイルし、テストを実行すると、テストもパスします。)

花子:うまく行ったね。setMailAddress() は、書かないの?

太郎:今は、必要がないから、書かなくてもいいんじゃない?ヤグニ(YAGNI)って
やつ。

花子:今度は、私がキーボードを持ちます。MemberListを書きますね。まずは、テス
トから。

    public void testNewMemberList() {
        MemberList memberList = new MemberList;
        assertEquals(memberList.getSize(), 0);
    }

    public void testOneMemberList() {
        MemberList memberList = new MemberList;
        Member member = new Member("aaa@....ccc");
        memberList.add(member);
        assert(memberList.getSize(), 1);
    }

    public void testTwoMemberList() {
        MemberList memberList = new MemberList;
        Member firstMember = new Member("aaa@....ccc");
        Member secondMember = new Member("ddd@....fff");
        memberList.add(firstMember);
        memberList.add(secondMember);
        assert(memberList.getSize(), 2);
    }

    // ...

という感じでMemberListの続きとMemberAuthorizationを書いてみます。どなたか、
実際にコンパイル、実行していただけると嬉しいです。

-- 
Kaoru Hosokawa
khosokawa@....com