【发布时间】:2010-05-28 11:31:55
【问题描述】:
我有时想知道的一件事是下面显示的两种风格中哪一种更好(如果有的话)?如果没有满足保护条件,是立即返回更好,还是只在满足保护条件 时才做其他事情?
为了论证,请假设保护条件是一个简单的返回布尔值的测试,例如检查一个元素是否在集合中,而不是通过抛出异常可能影响控制流的东西.还假设方法/函数足够短,不需要编辑器滚动。
// Style 1
public SomeType aMethod() {
SomeType result = null;
if (!guardCondition()) {
return result;
}
doStuffToResult(result);
doMoreStuffToResult(result);
return result;
}
// Style 2
public SomeType aMethod() {
SomeType result = null;
if (guardCondition()) {
doStuffToResult(result);
doMoreStuffToResult(result);
}
return result;
}
【问题讨论】:
-
我的经验法则:如果保护条件失败,则尽早返回,除非严重影响可读性,否则在保护条件之后单点返回。
标签: language-agnostic control-flow program-flow