public Card getCard()throws IOException{
Card c = null;
String cardInfo = null;
assert readStream != null: cardInfo = readStream.readLine();
assert cardInfo != null: c = CreateCard(cardInfo);
return c;
}
我有点不习惯,我试图通过使用assert语句测试null来提高代码质量。我似乎必须以菊花链方式链接我的断言,因为如果我测试的第一件事为空,那么下一个也将为空...。
最佳答案
这是有关断言的一些准则
不要使用断言来验证公共功能的参数。
这些函数应该抛出NullPointerException,
IllegalArgumentException和其他相关异常。
由于公共函数将被其他程序员使用,因此您应该
确保他们弄错了正确的错误。
使用断言检查条件的先决条件和后置条件
受保护和专用访问方法的参数。
不要使用断言来检查软件用户错误。如果您期望
您基于网络的在线销售系统的用户输入10位数字
信用卡号,并且她只能输入9位数字,请不要使用断言。
相反,抛出IllegalArgumentException。如果使用assert,请尽快
当有人关闭您的servlet容器上的断言时,
检查系统中的逻辑将消失。
使用断言检查参数和变量的条件
不应该发生
使用断言检查无效的代码分支
不要使用断言来做任何工作。断言是开发人员级别的
错误,不应用于修复程序中的状态或
执行复杂的日志记录。另外,请不要忘记,如果用户运行
没有断言的程序,代码将消失。如果那个代码是
对于程序的功能至关重要,您可能会陷入困境
麻烦。
不要打扰国际化断言错误消息。再次,
由于断言是开发人员级别的问题,因此将其国际化
会浪费时间。
使用断言检查发布条件。如果您创建一个方法并
期望它将永远不会向用户返回null