Index: [Article Count Order] [Thread]

Date:   Thu, 5 Jul 2001 11:24:50 +0900
From:  "Toru Koido" <koido@....jp>
Subject:  [XP-jp:02120] Re:XP 日誌
To:  <extremeprogramming-jp@....jp>
Message-Id:  <01Jul5.111920jst.117184@....jp>
References:  <20010705091414.F6B4.K_IKAGAWA@....jp> <20010705102209G.hiranabe@....jp> <20010705110250.DA28.W.FUKUSHIMA@....com>
X-Mail-Count: 02120

小井土@オーエスケイです。
#横槍です。

> 福嶋@PFUです。
>
> >
> >   static final String FEMALE = "FEMALE";
> >   static final String MALE = "MALE";
> >
> > をクラスに加えて,文字列リテラルの繰り返しを避けるリファクタ
> > リングを掛けました.
>
> うーん…。いまいちのような…。
>
> > 他の案として,C の enum 的に Sex リテラルを作る,という案が
> > ありました.
>
> 大反対ですね。Cのenum的にって、Cで開発しているわけではないの
> ですから。
>
> > final class Sex {  // like enum Sex { NOT_SPECIFIED, MALE, FEMAIL };
> >     int sex;
> >     public static final Sex NOT_SPECIFIED = new Sex(0);
> >     public static final Sex MALE = new Sex(1);
> >     public static final Sex FEMALE = new Sex(2);
> >     private Sex(int sex) { // !! private !!
> >         this.sex = sex;
> >     }
> > }
> >
> > class Person {
> >    String name;
> >    private Sex sex = Sex.NOT_SPECIFIED;
> >    // ...
> > }
> >
> > でも,今回は,複雑すぎる,ということでシンプルに String にし
> > ました.
>
> Sexインタフェースを実装したAbstractSexクラスがあって、それを
> 継承した、Maleクラス、Femaleクラス、NotSpecifiedクラスがあるの
> かな…と思いました。
> (そこまでやる必要ないのかもしれませんが)

もし、Maleクラス、Femaleクラスに明確な役割がなければ
平鍋さんのインスタンスで対処する方に賛成です。

IsSex見たいなメソッドが必要で、クラスを作成することで
if文がなくなるようなら、クラスを作成する方が良いですね。
#ヌルオブジェクトのリファクタリングの応用です。

最近、ヌルオブジェクトを導入して、コードがシンプルになって
このリファクタリングに少しはまっています。