タグ付けされた質問 「null」

Nullは値がないことです。nullは通常、参照変数またはポインタ変数がメモリ内のオブジェクトを指していないことを示すために使用されます。

10
null値を許可する型はマジックナンバーよりも望ましいですか?
私は最近、同僚と少し議論をしています。具体的にはC#を使用していますが、これはnull許容型を持つ任意の言語に適用できます。たとえば、最大値を表す値があるとします。ただし、この最大値はオプションです。nullableな数値が望ましいと主張します。私の同僚は、先例を引用してゼロの使用を支持しています。確かに、ネットワークソケットなどでは、無制限のタイムアウトを表すためにゼロがよく使用されています。今日ソケットを処理するコードを作成する場合、タイムアウトがないという事実を表す方が良いと思うので、個人的にnull値を使用します。 どの表現が優れていますか?どちらも「なし」を意味する値の条件チェックを必要としますが、null許容型は意図を少し良く伝えると信じています。

3
C#8のnull不可の参照とTryパターン
Dictionary.TryGetValueandで例示されるC#クラスにはパターンがありint.TryParseます。操作の成功を示すブール値と実際の結果を含む出力パラメーターを返すメソッド。操作が失敗した場合、outパラメーターはnullに設定されます。 C#8のnull不可の参照を使用しており、自分のクラスのTryParseメソッドを記述したいとします。正しい署名はこれです: public static bool TryParse(string s, out MyClass? result); falseの場合、結果はnullであるため、out変数はnull可能としてマークする必要があります。 ただし、一般的にTryパターンは次のように使用されます。 if (MyClass.TryParse(s, out var result)) { // use result here } 操作が成功したときにのみブランチに入るため、そのブランチで結果がnullになることはありません。しかし、null可能としてマークしたので、それを確認するか!、オーバーライドに使用する必要があります。 if (MyClass.TryParse(s, out var result)) { Console.WriteLine("Look: {0}", result.SomeProperty); // compiler warning, could be null Console.WriteLine("Look: {0}", result!.SomeProperty); // need override } これは見苦しく、少し人間工学的ではありません。 典型的な使用パターンのため、別のオプションがあります:結果タイプについてうそをつきます: public static …
22 c#  .net  null 

6
CまたはC ++で「nullチェック」を行うとはどういう意味ですか?
私はC ++を学んでおり、nullを理解するのに苦労しています。特に、私が読んだチュートリアルでは「nullチェック」の実行に言及していますが、それが何を意味するのか、なぜ必要なのかはわかりません。 ヌルとは正確には何ですか? 「nullをチェックする」とはどういう意味ですか? 常にヌルをチェックする必要がありますか? どんなコード例でも大歓迎です。
21 c++  c  null 

13
例外のスローは問題ないと見なされているのに、なぜnull参照が回避されるのですか?
一部のプログラミング言語の人々によるヌル参照の一貫したバッシングについては、よくわかりません。それらの何がそんなに悪いのですか?存在しないファイルへの読み取りアクセスを要求した場合、例外またはnull参照を取得できてうれしく思いますが、例外は良好と見なされますが、null参照は不良と見なされます。この背後にある理由は何ですか?

11
Javaでヌルを処理する最良の方法は?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 NullPointerExceptionが原因で失敗するコードがあります。オブジェクトが存在しないオブジェクトでメソッドが呼び出されています。 しかし、これにより、これを修正する最良の方法を考えるようになりました。nullポインタ例外のコードを将来的に保証するために、nullに対して常に防御的にコーディングするか、nullの原因を修正してダウンストリームで発生しないようにする必要がありますか。 あなたの考えは何ですか?
21 java  null 

4
ブール値のデータベースフィールドにNullとしてFalseを格納する必要がありますか?
Userというテーブルにブールフィールドを持つアプリケーションがあるとしましょうInactive。 falseをnullとして保存するだけで本質的に問題はありますか?もしそうなら、あなたはマイナス面がどうあるべきかを説明できますか?これについては数か月前に誰かと議論しましたが、アプリ/データベース全体で一貫して行う限り、それは問題ではないことに同意しました。最近、私が知っている誰かが「真実」trueまたはfalse使用されるべきだと強調しましたが、彼らは本当に理由についての説明を本当にしませんでした。

2
nullの@Nonnullアノテーションが付けられたパラメーターを確認しますか?
FindBugsの使用を開始し、パラメーターに@Nonnull適切な注釈を付けました。サイクルの早い段階でバグを指摘することは非常に効果的です。これまでnullGuava's を使用するためにこれらの引数のチェックを続けてきましたが、エッジcheckNotNullでnullのみチェックすることをお勧めしますnull。たとえば、SOAPリクエストのようにチェックされずに値が入る場所です。 // service layer accessible from outside public Person createPerson(@CheckForNull String name) { return new Person(Preconditions.checkNotNull(name)); } ... // internal constructor accessed only by the service layer public Person(@Nonnull String name) { this.name = Preconditions.checkNotNull(name); // remove this check? } 値自体を@Nonnullブロックしないことを理解していnullます。 ただし、FindBugsは値がマークされていないフィールドからマークされたフィールドに転送される場所を指すので、渡さ@Nonnullれるnullすべての場所でこれらの値をチェックすることなく、これらのケースをキャッチするためにそれに依存することはできませんか?システム?ツールを信頼し、これらの詳細なチェックを避けたいですか? 結論:下の2番目のnullチェックを削除しても安全に思えますが、それは悪い習慣ですか? この質問は、彼がnullを期待していない場合、nullをチェックするべきであるとおそらくあまりにも似ていますが、私は@Nonnull注釈に関連して具体的に尋ねています。
19 java  null 

8
CでNULLのポインタをいつチェックする必要がありますか?
まとめ: Cの関数は、NULLポインターを間接参照していないことを常に確認する必要がありますか?そうでない場合、これらのチェックをスキップするのが適切ですか? 詳細: プログラミングのインタビューに関する本をいくつか読んでいますが、Cの関数引数の入力検証の適切な程度はどうなっているのでしょうか?明らかに、ユーザーから入力を受け取る関数は、NULL参照を解除する前にポインターをチェックするなど、検証を実行する必要があります。しかし、APIを介して公開することを期待しない同じファイル内の関数の場合はどうでしょうか? たとえば、gitのソースコードには次のように表示されます。 static unsigned short graph_get_current_column_color(const struct git_graph *graph) { if (!want_color(graph->revs->diffopt.use_color)) return column_colors_max; return graph->default_column_color; } 場合*graphであるNULLヌル・ポインタは、おそらくプログラムをクラッシュが、おそらく他のいくつかの予期しない動作が得られ、逆参照されます。一方、関数はstaticそうなので、プログラマーはすでに入力を検証しているかもしれません。Cで書かれたアプリケーションプログラムの短い例であるため、ランダムに選択しただけです。NULLをチェックせずにポインターが使用される場所は他にもたくさんあります。私の質問は、一般にこのコードセグメントに固有のものではありません。 例外処理の文脈の中で同様の質問があるのを見ました。ただし、CやC ++などの安全でない言語では、未処理の例外の自動エラー伝播はありません。 一方、オープンソースプロジェクト(上記の例など)では、使用する前にポインターのチェックを行わないコードがたくさん見られました。関数にチェックを入れるタイミングと、関数が正しい引数で呼び出されたと仮定するタイミングに関するガイドラインについて誰かが考えているかどうか疑問に思っています。 私は本番コードを書くためにこの質問全般に興味があります。しかし、私はプログラミングインタビューのコンテキストにも興味があります。たとえば、多くのアルゴリズムの教科書(CLRなど)は、エラーチェックなしで擬似コードでアルゴリズムを提示する傾向があります。ただし、これはアルゴリズムの中核を理解するのには適していますが、明らかにプログラミングの実践としては適切ではありません。そのため、(教科書のように)コード例を単純化するためにエラーチェックをスキップしていることをインタビュアーに伝えたくありません。しかし、私はまた、過度のエラーチェックを伴う非効率なコードを生成するようには見えません。たとえば、null graph_get_current_column_colorをチェックするように変更された可能性があり*graphますが、*graphnullである場合の動作は明確ではありません。
18 c  validation  null 

4
Java Stringに静的な文字列操作メソッドがないのはなぜですか?
Javaデザイナーがjava.lang.Stringクラスで文字列操作メソッドの静的バージョンを作成しなかったのはなぜですか?以下のメソッドは私が参照するものですが、質問はクラス内の他の非静的メソッドにも拡張できます。 concat(String) substring(int, int) replace(char, char) toLowerCase() replace(CharSequence, CharSequence) toLowerCase(Locale) replaceAll(String, String) toString() replaceFirst(String, String) toUpperCase() split(String) toUpperCase(Locale) split(String, int) trim() substring(int) これらのメソッドの非静的バージョンのみを使用すると、そのようなメソッドを呼び出さなければならない場所で明示的な nullチェックが強制されます。たとえば、単に呼び出すexample = example.trim()と、NullPointerException ifになりString example = nullます。そのため、プログラマは次の定型的なヌルチェックを行う必要があります。 if (example != null) example = example.trim(); // OR: example = (example==null) ? null : example.trim(); example = (example==null) ? …
17 java  api-design  null 

4
Javaでnullチェックを行わずに値を取得する
多くの場合、データ階層から値をフェッチするときにNullPointerExceptionsを回避するためにnullチェックを行います。NullPointerExceptionsはエラーを起こしやすく、多くの定型文を必要とします。 オブジェクトを取得するときにnullチェックをスキップできる非常に単純なルーチンを作成しました... public final class NoNPE { public static <T> T get(NoNPEInterface<T> in) { try { return in.get(); } catch (NullPointerException e) { return null; } } public interface NoNPEInterface<T> { T get(); } } 私はこのように少し使います... Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom()); 上記の結果、すべての親レベルをnullチェックする必要なく、Roomオブジェクトまたはnullが取得されました。 上記についてどう思いますか?問題のあるパターンを作成していますか?あなたの意見ではこれを行うより良い方法はありますか?
15 java  null 

5
継承とnull値の追加プロパティ
オプションのフィールドを持つクラスの場合、継承またはnull許容プロパティを使用する方が良いでしょうか?この例を考えてみましょう: class Book { private String name; } class BookWithColor extends Book { private String color; } または class Book { private String name; private String color; //when this is null then it is "Book" otherwise "BookWithColor" } または class Book { private String name; private Optional<String> color; //when isPresent() …
12 java  inheritance  class  null 


1
HaskellのMaybeコンストラクターを「Just」と呼ぶことをサポートする直観は何ですか?
のようなオプションの型の直感は、Int Maybe Intがない(つまり、そこにNothingある)か、Int があるということです。そこに何かがあります。 それは私たちが「負」の場合の型コンストラクタを呼び出すように私には理にかなってNothing何もありませんということ-それは正確にすることを意味するので、Intそこに。しかし、なぜ実際にそこにある何かに重点が置かれている場合にだけ、単語を使用するのですか? 私にとって、「Just」という言葉には、説明しているものが代替品よりも少ないという意味が含まれています。実際にそこにある何かの反対。例えば、 A:今夜何かしますか? B:いいえ。私はただ滞在してテレビを見ます。 A:あなたの家の周りの不気味な幽霊の音を調査しましたか? B:ええ、実際には単なるフクロウでした。 明らかに、この命名の選択の根拠となった直感が欠けています。それは何ですか?私にとって、「Just」という言葉は、Maybeタイプでの使用方法の反対を意味します。

4
Ruby:if variable vs if variable.nil?
私はRubyを初めて使い、nilとfalseを除いてすべてのオブジェクトがtrueであることを知って驚いた。0でも真です。 言語のその特性についての良いところは、あなたが書くことができるということです: if !variable # do stuff when variable is nil end 経験豊富なRuby開発者である同僚は、.nilを使用する代わりにそれを選択すべきだと主張しています。そのようです: if variable.nil? # do stuff when variable is nil end ただし、後者は次の2つの理由により優れたオプションであると考えています。2.私の主題の意見では、たとえそれがよりコンパクトでなくても、より読みやすいです。 ここで「初心者」の間違いを犯していますか?

10
セキュリティ制限により、サービスがnullを返すか、例外をスローする必要がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私はこの問題に関して、より経験豊富な開発者と少し意見の相違があり、他の人がそれについてどう思うか疑問に思っています。私たちの環境は、Java、EJB 3、サービスなどです。 私が書いたコードは、物を取得して物を作成するサービスを呼び出します。私が遭遇した問題は、意味をなさないヌルポインタ例外を受け取ったことです。たとえば、サービスにオブジェクトの作成を依頼すると、nullが返されます。既知の有効なIDを持つオブジェクトを検索しようとすると、nullが返されます。私は自分のコードで何が間違っていたのかを理解しようといくつかの時間を費やしました。私は経験が少ないので、私は通常、何か間違ったことをしたと思いますが、nullリターンの理由はセキュリティであることがわかります。私のサービスを使用しているユーザープリンシパルがターゲットサービスに対する適切なアクセス許可を持っていなかった場合、単にnullを返します。ここにある他のほとんどのサービスもあまり文書化されていないので、明らかにこれはあなたが知っておくべきことです。 これは、サービスと対話するコードを作成する開発者としてはかなり混乱します。サービスに例外があり、ユーザーにこの物をロードしたり、物を作成したりするための適切なアクセス許可がないことを教えてくれるなら、それは私にとってはるかに理にかなっています。そうすると、サービスが期待どおりに機能しなかった理由がすぐにわかります。 サービスを書いた経験豊富な開発者は、データの要求はエラー状態ではなく、例外はエラー状態でのみスローされるべきであり、ユーザーがデータにアクセスできないときではないと主張しました。このデータは多くの場合GUIで検索され、適切な権限のないユーザーの場合、これらは単に「存在しません」。要するに、質問は間違っていないため、例外ではありません。これらのユーザーには「存在しない」ものがあるため、getメソッドはnullを返します。ユーザーがそのモノを作成することを許可されなかった場合、Createメソッドはnullを返します。 これは正常なものですか?何が起こっているのかを知るのがずっと簡単だと思うので、例外を使うことを好みます。そのため、たとえば、nullを返すのではなく、無効なIDを持つオブジェクトを要求した場合にNotFoundExceptionをスローすることも好みます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.