メソッドに null を渡す [closed] 質問する

メソッドに null を渡す [closed] 質問する

私は素晴らしい本を読んでいるところですクリーンコード

1 つの議論は、メソッドに null を渡すことについてです。

public class MetricsCalculator {
    public double xProjection(Point p1, Point p2) {
        return (p2.x - p1.x) * 1.5;
    }
}
...
calculator.xProjection(null, new Point(12,13));

これは、これを処理するためのさまざまな方法を表しています。

public double xProjection(Point p1, Point p2) {
    if (p1 == null || p2 == null) {
        throw new IllegalArgumentException("Invalid argument for xProjection");
    }
    return (p2.x - p1.x) * 1.5;
}

public double xProjection(Point p1, Point p2) {
    assert p1 != null : "p1 should not be null";
    assert p2 != null : "p2 should not be null";
    return (p2.x - p1.x) * 1.5;
}

私は主張アプローチですが、アサーションがデフォルトでオフになっている点が気に入りません。

最後にこの本はこう述べています。

ほとんどのプログラミング言語では、呼び出し元によって誤って渡された null を処理する適切な方法はありません。このような状況であるため、デフォルトで null を渡すことを禁止するのが合理的なアプローチです。

この制限をどのように強制するかについては、あまり詳しく述べられていませんね?

どちらか一方に強い意見をお持ちの方はいらっしゃいますか。

ベストアンサー1

一般的なルールは、メソッドがnull引数を期待していない場合は、システム.ArgumentNullException適切にスローすると、Exceptionリソースの破損やその他の問題から保護されるだけでなく、コードのユーザーに対するガイドとして機能し、コードのデバッグに費やす時間を節約できます。

こちらの記事もご覧ください防御プログラミング

おすすめ記事