ホップ・ステップ・εミ(ο_ _)ο ドテッ

プログラミングの風景をちょいとぶつぶつ書きつづってみようというテスト

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  98  : 記事  1  : コメント  1221  : トラックバック  9

ニュース

ゆーち

Y.Uchiyama

 福岡県在住
 株式会社シーソフト
 代表取締役
 現役職人です(`^´)
 主にC++を使ってます
リアルマイミク募集中w
 (・∀・)Mixi
フォローよろしくw
 (・∀・)Twitter

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

nullっての、混同するケース多いですよねぇ。
いまだにCのソースで、str[ len ] = NULL; なんて記述を見つけたりします
(CでのNULL は (void *)0 というポインタ値(メモリ上のアドレス)で、文字列の終端のために用意された定数ではないです)
※C++では、NULL は 0 という値になりましたからねぇ・・・指摘できなくなってしまったorz

データベースではフィールドとして用意されたデータ領域の値が未定義であるという意味での NULL が使われます。
C#には、同様に値が未定義であることを許可する null という型?値?が導入されているようです。
値としての NULL と 値が未定義である NULL とは、まったく異質のものなのに混同してしまうケースとかあるみたいだし
データベースフィールドのNULLとC#のnullを同一視してしまうとかもありそうです。(掲示板にその手の話題が出ているキガス)

NULLに反対ってな意見をどこぞで見たのですが、数値や文字列を格納するための領域で値が設定されていない「状態」を表現するのは必要なことだと思います。
ずいぶん昔は、99999が設定されていたら未定義、とか後で拡張する人に対する配慮のないプログラムが横行してましたが、そっちの方がもっと問題です。┐(´ー`)┌

でも未定義のNULLってのは、ソースプログラムの可読性を損なわせるような、やっかいな記述を強いられることが多いと感じますね。

そのへんをエレガントにできるワザがありそうな気がするんだけど・・・
気のせいなのかなぁ(謎

投稿日時 : 2008年8月22日 21:06

コメント

# re: null 2008/08/22 21:41 鶏唐揚
普通なら0とか"\0"とかですよね

終端はヌル「文字」(文字コードゼロ)って教わるはずなんですが
そんなけったいなコード書く人いるんですか…


#なんか、定数で同じ値が定義されるからって
 使用目的を無視して関係ない定数使う人いますよね。
 正直保守で死ぬんでやめてくれって感じですw

# re: null 2008/08/22 23:02 dolan
VBのIsEmptyって関数みたいなもんですかね。もちろんVariant型限定ですが。。。

# re: null 2008/08/22 23:40 アキラ
Boost.Optionalを使うといいです

# re: null 2008/08/23 11:41 bleis-tift
> NULLに反対ってな意見をどこぞで見たのですが
http://www.geocities.jp/mickindex/database/idx_database.html
ここでしょうか?

# re: null 2008/08/23 12:50 ゆーち
>鶏唐揚さん
>正直保守で死ぬんでやめてくれって感じですw
そこですw
全体的な影響範囲だと、ひどい目に遭いますよねぇ(T^T)

>dolan さん
VBは知らないけど、BCB の Variant には、IsNull と IsEmpty の二つの検査関数があって、異なる答えを返すときがありました。
orz

>アキラさん
Optional・・・・しらないw
今度勉強しておきます。ありがとん。

>bleis-tiftさん
あちきが見たのはそこではなかったっす(^-^;
反対されてますですね・・・

<余談、雑談>
コンピュータが0と1を判断する際に、ハードウエアの観点から見たとき、VCC(とは限らないけど)を1として見るのに対し、0の判断は GND ベースでの判断とオープン(未通電)での判断とが分かれているのも、あちきにはちょっち引っかかってたです。
GNDだと0でいいけど、未通電ってのは未定義NULLなのではないか、とかね。</余談、雑談>


# Nullable 型 2009/01/28 22:49 dolan(どらん)日記
Nullable 型

# Nullable 型 2009/01/28 22:51 dolan(どらん)日記
Nullable 型

Post Feedback

タイトル
名前
Url:
コメント