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

[jfriends] 暗黙の型変換(Re: getterの命名について)




subject変えるタイミングを逸した気がする...
In article <19991013124856.540e00d3.31735@xxxxxxxxxx>
前橋 和弥 wrote:
>> これはCの仕様からは間違った記述のはずです.
>
>ええと、C-FAQにある通り、言語仕様上は間違ってはいないはずですが、

OKっす.安心しました.議論になっているのを見たことがあってどっちだ
ったかは忘れておりました.

>ま、if (!p)... と書くプログラマは、美しいとか
>いうことより、単に面倒くさいから短い方の記述を
>とってるだけに見えるんですが...

有効/無効と真/偽を対応付けた場合はこちらの方が自然な書き方だと思
ってましたので安心して使えます.

>> Javaでも
>> if (obj) {
>> とか
>> if (!obj) {
>> でisNullじゃ無いけどポインタから真偽への暗黙の変換をしてくれても
>> いいじゃないかって気もします.
>> (なぜなら基本的にJavaの変数はnull以外の無効なアドレスを持ちようが
>> 無いから)
>
>if (p1 = p2) {    
>       ↑ == のつもりでミスタイプ
>
>を検出できなくなるので、問題ありのような気もしますが、それは
>ともかく。

(長いことやってるとそんなことする?なあんて思ってしまうのですが)初
心者は良くやるんですよね.
コンパイル時チェックを厳しくするという観点ではそれが一番の理由か
もしれません.
# Cでも最近のは(レベル上げると)警告を出すようになってしまってうる
# さいのなんの.
しかし、オブジェクトの==での比較は正直言ってあまり多くないと思い
ます.nullチェックは圧倒的に多いですが.
プリミティブ型に真偽が無いのは良いですが、オブジェクトに関しては
有効/無効を真偽に変換する仕様でもこの問題は発生しにくい気はします.
(仕様の統一性から却下なのでしょうけど)

>Javaは、booleanに関しては、何故だか異様にチェックが厳しくて、
>Stringへのに関しては異様にスカスカなんですよねえ。なんかこー、
>単に「Cとは変えてみました」的な意志を感じるのは私だけ? (^^;

Stringへの変換に関しては自由度が大きいですねえ.
でも何も考えずに+演算子で繋ぐと性能が悪化するという落とし穴が用意
されていて.
お手軽さと安全度の板挟みで相当に吟味されたであろうことは予想出来
ます.
現状の仕様でStringへの暗黙の変換に関連してバグを埋めこむ可能性っ
てどんなのがあるでしょう.

──────────────────
木下 信@イデア
──────────────────