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

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



-------------------------------------------------------

おお、こっちでも(?)ヨタ話:)
In article <199910130147.KAA07586@xxxxxxxxxx>
inami wrote:
># すでに,最初に何を聞きたかったのか忘れてます(^^;

取り敢えず == nullという書き方がみっともないなあという共通の認識
はあるんだけど、どう書けたら良かったのかなあという空想の話.
(ってのはうそで空想の話にもっていこうとしているのは私)
# もしかしたらいなみさんの立場は == nullでいいやん派かも.

>if (fooObj isNull) { ...
>か、! と並びを同じにするなら
>if (isNull fooObj) { ...
>かなぁ…。なんだか違和感が……(笑)
># しかも,演算子に見えないし(^^;

考えてなかったので演算子は前置(オペランドが右に来るもの)を想定し
ていましたが、こうやって書いてみると後置の方が自然っぽいですね.

>  if (intObj.getClass() == Integer.class) {
>          ↓
>  if (intObj instanceof Integer) {
>なら,(上の文がコンパイル通るかは試してませんが(^^;)下のほう
>がスマートです.

これは条件の意味が変わってしまうので要注意です.

>でも,null判定で
>  if (obj == null) {
>に対し,
>  if (obj isNull) {
>  if (Object.isNull(obj)) {
>  if (obj.isNull()) {
>などをでっち上げても,別に何も改善されませんよね.
>元々が単純すぎます.
後、
if (isNull(obj)) {
というでっち上げもあります.
(Objectにstaticメソッドがあったならばの意)※


>nullが特別な値であるのは確かですが,null判定も特別にしなけれ
>ばいけないような理由はどこかにあるのでしょうか.

さあ...:)
だから言語仕様では特に用意していないんでしょうね.

>某所で見かけたのですが,C言語ではポインタがnullかどうか判定す
>るのに,条件判定は0が偽,それ以外の数値が真である事を利用して
>  if (p==NULL) {
>ではなく,
>  if (!p) {
>だという論も見かけたのですが,さすがにそこまでしてどうする,
>と言う気持ちでいっぱいになりました(^^;
>C は使ってないので何ですが,本当に上の書き方をするのだろうか(^^;

これはCの仕様からは間違った記述のはずです.
(実際は問題無いのでポインタに真偽はないという意味論ですが)
# でもよく書いた気がします.
で、ポインタが有効か否か、とNULLかそうでないか、がリンクしている
時は条件式的には気持ちいいんですよ.

Javaでも
if (obj) {
とか
if (!obj) {
でisNullじゃ無いけどポインタから真偽への暗黙の変換をしてくれても
いいじゃないかって気もします.
(なぜなら基本的にJavaの変数はnull以外の無効なアドレスを持ちようが
無いから)

># 西沢さんが現在行っているような,自作ラッパークラス内での
># 内容チェックで,isNull()メソッドを作る,以上の事を考えれま
># せん(^^;

自分のクラスについてはisValid()みたいなメソッドを用意することはあ
りますね.自分自身のオブジェクトはあるけど中の何処かがnullだったり
初期化されていない場合がある時のために.
いなみさんが最初に思ったのは自分自身が無効(null)であることもそれ
と同じレベルでチェック出来たらいいのに、ということかなあと思って
います.
まあそれはできないのでtargetとして変数を渡すしか無いので※方式.
でも、Objectクラスにはメソッド追加出来ないので西沢さん方式.
っと、落とし所でしょうか:)

──────────────────
木下 信@いであ
http://village.infoweb.ne.jp/~shinq/
──────────────────