Я посреди чтения отличного 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;
}
Я предпочитаю подход утверждения, но мне не нравится тот факт, что утверждения по умолчанию отключены.
В книге, наконец, говорится:
В большинстве языков программирования нет хорошего способа справиться с нулем, который случайно передается вызывающим абонентом. Поскольку это так, рациональный подход состоит в том, чтобы запретить передачу null по умолчанию.
На самом деле не идет речь о том, как вы будете применять это ограничение?
У любого из вас есть сильные мнения в любом случае.