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

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




確かに私の最初のポストがずれてたせいで混乱を生じさせてました.
すみません.
In article <199910130736.QAA20306@xxxxxxxxxx>
inami wrote:
>ただ,その後見かけてしまった(^^; isNull はちょっと意外に思っ
>たので聞いてしまった,と言うのところ.

そう、この時点では西沢さんは、
In article <38042d3b.3846.faf278c01cf93133@xxxxxxxxxx>
Shin wrote:
>>自分のクラスについてはisValid()みたいなメソッドを用意することはあ
>>りますね.自分自身のオブジェクトはあるけど中の何処かがnullだったり
>>初期化されていない場合がある時のために.
のパターンで、(ラッパクラスであるため)内包するオブジェクトが一つ
なのでisNull()と称していたのに、私が、単なる変数のnullチェックの
話に持って言ってしまったのでした.
# やっと気付いたんですが...

で、ラッパクラスでない場合についてですが、これは完全にヨタ話で身
の無い話です...
この点について今の私の解釈の仕方はこうです.
# これこそヨタな解釈だけど.

変数(取り合えずオブジェクト変数)というオブジェクトに対するメッセ
ージの与え方として以下のようなものがある.

1:=演算子による値の設定メッセージ
2:変数名を(右辺値として)表記したことによる値の取得メッセージ
3:== !=演算子による値の検査メッセージ
# ん、これだけかな.

'.'演算子は変数に対してではなく変数名を記述したことにより取り出さ
れたオブジェクトに対するメッセージと解釈します.
# 2と3は相容れないので本来は1,2しかないんですけどちょっと無理やり

で、isNull()って言っていたのは要は変数に対するnullであることの検
査メッセージな訳ですから、== nullはばっちりな表現だ.
ってなかんじで.

>  if (foo == null) {
>を「特例」でチェックできるとしたら
>  if (foo.isNull) {
>的なのが良いです.
>Array.length みたく……ちがうかも(^^;
>
>でも,立場的には上の2つは何が違うの? です.

元の西沢さんのはラッパクラスだから、
if (fooWrapper.getFoo() == null) {
が
if (fooWrapper.isNull()) {

で可読性アップだよ!な訳ですが、単なる変数の場合は前述のような解釈
ならごく自然に見えるようになってきました.
# でもさっきの3をメッセージと解釈しない(正しい解釈?)なら、null と
# いう値との比較というのはやっぱりちょっと不自然.

>isNull を特別扱いしたとして(妄想モード) 見た目的にも内容的に
>もどっちのコーディングを見たってわかるもんはわかります.
>「特例」を認める何か,が見受けられないのに,その特例はあった
>方が良いのか,と言うのが Shin さんが会話に加わってからの(笑)
>どこまでも続く無限の疑問点なのです.

お手軽か厳密か、完全なオブジェクト指向言語だったらnullかどうかを
メッセージで問い合わせるんだろうなあって気持ちはあるんじゃないで
しょうか.
# そんなこと言い出したらnullだけじゃないだろって事になるといよい
# よ収拾が付かないですけど:)
# (==なんて要らないってことになるか?)

──────────────────
木下 信@いであ
mailto:shinq@xxxxxxxxxx
http://village.infoweb.ne.jp/~shinq/
さて、定時だ.帰ろ.
この生活も次の仕事が決まるまで...
──────────────────