我认为这在一定程度上与短路逻辑有关,但我找不到任何直接回答我问题的问题。可能的相关问题:Benefits of using short-circuit evaluation、Why use short-circuit code?
考虑以下两个代码块,这两个代码块都可能是类的构造函数
public MyClass(OtherClass other){
if (other != null) {
//do something with other, possibly default values in this object
}
}还有这个
public MyClass(OtherClass other){
if (other == null) return;
//do something with other, possibly default values in this object
}做后者比做前者有什么好处吗?构造函数后面没有其他代码,只有使用other对象构造该对象的代码。
发布于 2012-03-28 23:16:21
在这种情况下,你应该做对你和你的同事最具可读性的事情。这两种方法之间不太可能有任何可察觉的速度差异。
发布于 2012-03-28 23:15:58
唯一的区别是可读性。有了你所谓的“快速退出”,你可以不再考虑你所处的条件,因为你不再处于其中。
发布于 2012-03-28 23:16:21
后者通常更容易阅读,如果您有多个可能终止的情况,那么它就会变得更容易。然而,这并没有速度上的区别。
假设您有一个接受Int32?的函数,如果值为null、even或大于100,它就会退出。
你可以这样做
void fn( Int32? num ) {
if ( num != null ) {
if ( num < 100 ) {
if ( num % 2 != 1 ) {
//method code或者类似于
void fn( Int32? num ) {
if ( num == null )
return;
if ( num > 100 )
return;
if (!(num % 2 != 1))
return;
//method code现在这个例子有点愚蠢,我现在可以听到了,为什么不把它们和||或&&放在一起,在这个例子中是这样的。但是想象一下,如果数据验证比这复杂得多呢?你最终会得到过度缩进的结果,很难读懂代码。
https://stackoverflow.com/questions/9910505
复制相似问题