パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

null参照の考案は10億ドル単位の過ち?」記事へのコメント

  • by Anonymous Coward
    NULLがない場合は、何で初期化したらいいんでしょうか?

    # え?NULLがあっても、NULLなんかでは初期化しませんか。そうなんですか。
    • by Anonymous Coward
      Javaでの話ですが「あるメソッドで使用する変数は全てメソッドの先頭で宣言し、nullを代入すること。ただしループ変数は除く」
      というコード規約を見たことがあります。なんでそんなことをするのか質問したのですが、納得できる答えはありませんでした。
      • C#はごく簡単に実体の無い宣言だけの変数が作れてしまうので、覚えたての時に戦慄しました。なにせコンパイルでは何も指摘されず、すべて実行時エラーになったので…。あれも慣れなのかも知れませんが、Javaだと基本的には初期化されますしC++では参照は初期化が必須(コンパイルエラーになる)で、それ以外も未初期化変数使用はコンパイル時にWarning出すのでちょっと驚きました。あれはnullポインタより怖かった。
        もちろん実体作成しとくのが前提なのですが、最初は初心者ですしうっかりミスもありえます。

        #最近使ってないので改良されたかな。もしかしてWarningレベル上げればチェックしてくれてたのだろうか。
        • by Anonymous Coward on 2009年03月06日 12時29分 (#1526041)

          記憶にある限り、C#1.0 のころからずっと未初期化のローカル変数を(out パラメータに渡す以外に)使用したらコンパイルエラー(警告ではありません)になっていたはずです。
          フィールドは初期値を明示しなくても使えますけど、これは言語仕様で既定値で初期化されると規定されているので問題にはならないでしょう。

          親コメント
          • by Sakura Avalon (12557) on 2009年03月06日 19時00分 (#1526303)
            多次元配列を扱っているところだったと思います。C++と同じ感覚で宣言していたら、コンパイルでは何も指摘が無かったのに実行時に実体が無い(参照できない)としてエラーとなりました。

            #もちろん単純ミスだったのですぐ直したのですが、その時に「不親切だなぁ」と思ったのでした。
            #もしかするとよほど特殊な状況だったのでしょうか。
            親コメント
            • by Anonymous Coward
              多次元配列って[,,]と[][][]のどっち?

計算機科学者とは、壊れていないものを修理する人々のことである

処理中...