验证后要执行一些code
考虑变量SOQualityStandards = true;
在执行代码之前验证此变量。
我遇到过两种检查SOQualityStandards
一个是
if(SOQualityStandards)
{
//code to execute
}
,另一个是
if(!SOQualityStandards) return;
//code to execute
两者之间是否有任何性能差异。我应该考虑哪一个。
答案 0 :(得分:5)
它们具有相同的语义(假设在第一个示例中的if-block之后函数中没有其他代码)。
我发现第一个更清楚,但这是个人偏好的问题。
答案 1 :(得分:2)
编译器会认为这两个选项是相同的,可以将一个选项转换为另一个选项,反之亦然,因此性能考虑是不可靠的。即使性能受到影响,我认为无论如何,可读性/可维护性在这些问题中都是一个更大的问题。
在这种情况下,我倾向于在开始时做返回,因为它减少了阅读方法其余部分时的缩进和心理负担。在开始时在回报中测试的状态变为在理解该方法时不再需要考虑的状态。另一方面,如果块很大,则需要在整个方法中精神上跟踪状态差异。
如果需要进行多项测试来保护内部代码块,这一点就变得尤为重要。
答案 2 :(得分:0)
这两种方法没有区别。这是个人选择的问题。
答案 3 :(得分:0)
在两者之间进行选择只是个人偏好(参见Sven's answer和bomslang's answer)。在大多数情况下,微观优化是完全没有必要的。
在您发现问题之前,不应优化执行时间。您可能花费宝贵的时间来添加其他功能或者对系统架构进行改进。
如果你真的需要优化,循环和递归函数通常是第一个看的地方。
如果您需要进一步优化,那么单线变量检查和操作仍然是最后要优化的一些事项。
记住(如Jeffrey said)可读性和可维护性在大多数情况下是最重要的因素。