对于具有类似输入检查逻辑的方法的类(例如,具有许多方法的自定义多维数组,所有这些方法都检查给定的坐标是否在数组限制内),我创建了一个单独的私有检查器和一个公共检查器,前者抛出运行时异常,后者只返回一个布尔值,指示变量对于该类方法是否可接受。下面是一个例子:
public class Foo {
public void doStuff(Variable v) {
checkVariableUnsafe(v);
... // do stuff
}
private void checkVariableUnsafe(Variable v) throws InvalidVariableException {...}
public boolean checkVariable(Variable v) {
try {
checkVariableUnsafe(v);
return true;
} catch (InvalidVariableException e) {
return false;
}
}
}是否可以使用它,或者是否有一些我看不到的缺点?在这种情况下,常用的模式是什么?
发布于 2011-07-03 21:17:59
对于正常的程序流,通常建议避免使用异常。这里不讨论that issue,如果您想遵循这个建议,那么可以将实际执行检查的逻辑放在公共checkVariable方法中,并让私有checkVariableUnsafe方法调用checkVariable并在返回false时抛出异常。
我不认为你的问题中有足够的上下文来明确地评论你所创建的API的适当性,但我看不出它本质上有什么问题。
发布于 2011-07-03 21:09:33
使用相同的代码进行有效性预测和实际验证不仅是一个好主意,而且是唯一正确的想法。既然第一条戒律是“不要重复自己!”,当然你应该把这个检查提取到它自己的方法中。所以这正是我通常做的。
发布于 2011-07-03 21:08:47
这是一个非常好的实践。我只会使用标准的IllegalArgumentException,而不是自定义的。
https://stackoverflow.com/questions/6563023
复制相似问题