私は優れたクリーンコードを読んでいる最中です
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 を渡すことを禁止することです。
この制限をどのように強制するかについては、実際には入りませんか?
どちらにしても、強い意見を持っている人はいますか。