[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: getterの命名について



アステル関西まっTelサービス(着信専用サービス、月額基本料金¥0)申込受付中
通話ができるので、彼女や、塾通いお子さんにもう1台!http://www2.gulf.or.jp/ 
---------------------------------------------------------------------------


こんばんは。
西沢@イーサー・プラニックです。

#すいません、かなり説明不足な書き方で誤解を招いたかもしれません。

On Thu, 07 Oct 1999 16:17:34 +0900
inami <inami@xxxxxxxxxx> wrote:
> > やはり、よく使う比較条件などは、毎回値を取り出してnullと比較するよりも、
> > isNull()のメソッドを用意しておけば if文などで何を評価しているか
> > メソッド名からわかるので可読性が大幅アップです。
> 
> # null に特化して変なことを聞いてしまいますが(^^;
> 取り出した値が null かチェックする場合を考えた場合、何か変な
> 気がしますが気のせいでしょうか。

すいません。
「例えば」という言葉が抜けていました。(^^;)

そもそも、is*****やhas*****、can*****なんてネーミングのメソッドが
欲しいクラスはデータをラッピングしたデータモデル系がほとんどで、
isNull()というのもそのひとつというイメージで書いていました。

#nullに聞いて怒られるのは承知してます(^^;)


> と言うか、西沢さんの考えたのは Foo ではなく obj の方のメソッ
> ドとして、
> class Obj {
>    Foo foo;
> 
>    public Foo getFoo() {
>       retuen foo;
>    }
>    public boolean fooIsNull() {
>       return foo==null;
>    }
> }
> とか、各プロパティ毎に xxxIsNull()を作るような感じでしょうか。
> isNull(String propertyName) とか付けて、プロパティ名で
> リフレクション使って……とか?(^^;

意味的にはそうですが、値が複数ある場合にはあまり有効ではなですね。

私がイメージしていたのは前述の通りなのですが、具体例がないと説得力が
ないかもしれないので例をひとつ。

今のジョブでいろいろな用途で統一したコンテナ系クラスがあれば便利だと考え、
データを格納するラッパークラスを作りました。
値は何でもOKにするためにObjectにして、その他には格納した値の型を表す
プロパティ、nullを許すかどうか、編集可能かどうかなど、値に対するメタ情報
をいろいろと実装しました。

で、そのクラスのサービスのひとつとしてisNull()、というのを作りました。

#他には、notNull()やisEditable()、isNullable()など。

なんでそんなクラスが必要だったかを説明すると長くなるので省略しますが、
メタ情報でデータのチェックを動的にしたり、JDBCのPreparedStatementで
動的にデータをバインドするのに結構重宝してます。

#データベースからselectしてきた時にラッパークラスのオブジェクトを
#動的に作ってしまうので、使うときにいろいろと楽でした。


> > でも、なぜBooleanクラスにisTrue()とかisFalse()とかのメソッドがないの?と
> > 思ってしまいます。。。
> > 
> > #booleanValue()ってダサダサ(^^;)
> 
> ラッパークラスの宿命……と思ったら、Charcter は is〜なメソッ
> ドがたくさんあるな(^^; と、思ったけど static メソッドなので
> 関係ないや。

うーん、これも個人的にはイヤです。(^^;)
プリミティブな型のチェック用にあって欲しいですが、それ以外にも
オブジェクトのサービスとして欲しい、、、と思ってしまいます。


> [プリミティブの型名]+Value() と言うメソッドしか無い、と言う
> のはやはり宿命かもしれません。

全体としてネーミングの統一もかなり重要なので仕方ないと言う
しかないですね。(^^;)


----------------------------------------
Atsuyuki Nishizawa <anishi@xxxxxxxxxx>
ETHER PLANIC CO.,LTD.