将 null 传递给 [已关闭] 方法
我正在阅读优秀的清洁代码
一个讨论是关于将 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。
它并没有真正进入你如何执行这个限制?
你们中是否有人有强烈的意见。