[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: getterの命名について
-------------------------------------------------------
前橋@豊洲 です。
木下さん:
>>某所で見かけたのですが,C言語ではポインタがnullかどうか判定す
>>るのに,条件判定は0が偽,それ以外の数値が真である事を利用して
>> if (p==NULL) {
>>ではなく,
>> if (!p) {
>>だという論も見かけたのですが,さすがにそこまでしてどうする,
>>と言う気持ちでいっぱいになりました(^^;
>>C は使ってないので何ですが,本当に上の書き方をするのだろうか(^^;
> これはCの仕様からは間違った記述のはずです.
ええと、C-FAQにある通り、言語仕様上は間違ってはいないはずですが、
> (実際は問題無いのでポインタに真偽はないという意味論ですが)
意味論ということなら、そうかもしれません。
> # でもよく書いた気がします.
私もよく書いてます(本職は(たぶん)Cプログラマ)
ポインタは真偽値ではないという点では、
p == NULL
とでも書いた方が意味がはっきりしていいんですが、
Lispだと、nilが tの反意語になってたりするので、
NULLを偽とみてもそんなに悪くないような気もしな
いでもないような気もしないでもないのです(^^;
ま、if (!p)... と書くプログラマは、美しいとか
いうことより、単に面倒くさいから短い方の記述を
とってるだけに見えるんですが...
> Javaでも
> if (obj) {
> とか
> if (!obj) {
> でisNullじゃ無いけどポインタから真偽への暗黙の変換をしてくれても
> いいじゃないかって気もします.
> (なぜなら基本的にJavaの変数はnull以外の無効なアドレスを持ちようが
> 無いから)
if (p1 = p2) {
↑ == のつもりでミスタイプ
を検出できなくなるので、問題ありのような気もしますが、それは
ともかく。
Javaは、booleanに関しては、何故だか異様にチェックが厳しくて、
Stringへのに関しては異様にスカスカなんですよねえ。なんかこー、
単に「Cとは変えてみました」的な意志を感じるのは私だけ? (^^;
de 前橋