【发布时间】:2010-09-07 03:10:36
【问题描述】:
我正在阅读优秀的Clean Code
一个讨论是关于将空值传递给方法。
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;
}
我更喜欢assertions 方法,但我不喜欢断言默认关闭的事实。
这本书最后说:
在大多数编程语言中,没有很好的方法来处理调用者意外传递的空值。因为是这样,理性的做法是默认禁止传递null。
它并没有真正涉及您将如何执行此限制?
你们中的任何人都有强烈的意见吗?
【问题讨论】: