[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/
──────────────────