我的团队不主张
My team does not assert
在主要工作 Python 和 C/C++ 几年后,我回到了 Java。我经常在其他结构中使用 assert
s。今天我很难让自己不使用断言。
$ java -help 2>&1 | grep -2 "\-ea"
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions with specified granularity
我的团队在任何情况下都不使用 -ea
,所以我使用的结构如下:
assert COND;
if (! COND) {
throw new AssertionError("COND was not true");
}
我要放的地方 assert COND;
.
经常点赞:
assert variable != null;
if (variable == null) {
throw new AssertionError("variable was null");
}
我要放的地方 assert variable != null;
.
您对此有何评论或如何改进?
断言可以被禁用,因此不能保证在任何时候都处于活动状态。这可能是很少有人使用它们的原因。
如今,单元测试已取代断言,因为它们会运行代码以查看其行为是否符合预期。此外,@Nullable 等注释有助于 IDE 在不允许的地方捕获潜在的空指针。
我建议您询问您的团队他们希望如何完成此类检查。 Google Guava 和 Java 8 对此有有用的辅助方法。
My team does not use -ea under no circumstances
好吧,那改变那个?不应该 difficult/hurt 将其添加到测试服务器。
assert COND;
if (! COND) {
throw new AssertionError("COND was not true");
}
那些东西不一样。一个可以关,一个不可以。
始终强制验证可用于清理不受信任的输入。
另一方面,断言只能用于防止程序员出错。
在主要工作 Python 和 C/C++ 几年后,我回到了 Java。我经常在其他结构中使用 assert
s。今天我很难让自己不使用断言。
$ java -help 2>&1 | grep -2 "\-ea"
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions with specified granularity
我的团队在任何情况下都不使用 -ea
,所以我使用的结构如下:
assert COND;
if (! COND) {
throw new AssertionError("COND was not true");
}
我要放的地方 assert COND;
.
经常点赞:
assert variable != null;
if (variable == null) {
throw new AssertionError("variable was null");
}
我要放的地方 assert variable != null;
.
您对此有何评论或如何改进?
断言可以被禁用,因此不能保证在任何时候都处于活动状态。这可能是很少有人使用它们的原因。
如今,单元测试已取代断言,因为它们会运行代码以查看其行为是否符合预期。此外,@Nullable 等注释有助于 IDE 在不允许的地方捕获潜在的空指针。
我建议您询问您的团队他们希望如何完成此类检查。 Google Guava 和 Java 8 对此有有用的辅助方法。
My team does not use -ea under no circumstances
好吧,那改变那个?不应该 difficult/hurt 将其添加到测试服务器。
assert COND; if (! COND) { throw new AssertionError("COND was not true"); }
那些东西不一样。一个可以关,一个不可以。
始终强制验证可用于清理不受信任的输入。
另一方面,断言只能用于防止程序员出错。