2

1 つのクラス A の場合:

Class A
    public List<string> getValues

メソッドを呼び出したい場合、戻り値が null かどうかを常に確認する必要がありますか? 私はそれがnullになる可能性はないと思いますが(空のリストであるべきです)。すなわち

Class B
    public void GetSomething
        foreach (var thing in A.getValues)
            //do something....

また

Class B
    public void GetSomething
        var things = A.getValues;
        if (things != null)
        foreach (var thing in things)
            //then doing something....

この質問をする理由は、単体テストを書いたときに、クラス A のメソッドが空のリストではなく null を返すようにしたためです。例外をキャッチしようとするのではなく、チェックする方が適切ですか?

4

2 に答える 2

6

要するに、いいえ、常にチェックする必要はありません。使用するメソッドの仕様は、期待する結果のセマンティクスに関して常に明確である必要があります。したがって、たとえば、値がないときにgetValuesが空のリストを返すことを期待し、誤ってnullオブジェクトを返すようにリストを記述した場合、NullPointerExceptionは完全に正常な結果になります。メソッドの仕様またはその実装を台無しにしたことを警告します。一方、いくつかの条件が満たされていないためにgetValuesがnullオブジェクトを返す場合もあります。その場合、実際には何かを意味するので、確認する必要があります。

于 2013-03-05T11:34:59.307 に答える
0

メソッドが null を返すようにした場合は、操作を行う前に常に null をチェックする必要があります。

あなたの場合、 null をチェックせず、 A.GetValues がたまたま null である場合、例外がスローされます

于 2013-03-05T11:34:05.753 に答える