首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速退出方法或构造函数有什么好处吗?

快速退出方法或构造函数有什么好处吗?
EN

Stack Overflow用户
提问于 2012-03-28 23:12:58
回答 7查看 153关注 0票数 4

我认为这在一定程度上与短路逻辑有关,但我找不到任何直接回答我问题的问题。可能的相关问题:Benefits of using short-circuit evaluationWhy use short-circuit code?

考虑以下两个代码块,这两个代码块都可能是类的构造函数

代码语言:javascript
复制
public MyClass(OtherClass other){
    if (other != null) {
       //do something with other, possibly default values in this object
    }
}

还有这个

代码语言:javascript
复制
public MyClass(OtherClass other){
    if (other == null)  return;

    //do something with other, possibly default values in this object
}

做后者比做前者有什么好处吗?构造函数后面没有其他代码,只有使用other对象构造该对象的代码。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-03-28 23:16:21

在这种情况下,你应该做对你和你的同事最具可读性的事情。这两种方法之间不太可能有任何可察觉的速度差异。

票数 6
EN

Stack Overflow用户

发布于 2012-03-28 23:15:58

唯一的区别是可读性。有了你所谓的“快速退出”,你可以不再考虑你所处的条件,因为你不再处于其中。

票数 4
EN

Stack Overflow用户

发布于 2012-03-28 23:16:21

后者通常更容易阅读,如果您有多个可能终止的情况,那么它就会变得更容易。然而,这并没有速度上的区别。

假设您有一个接受Int32?的函数,如果值为nulleven或大于100,它就会退出。

你可以这样做

代码语言:javascript
复制
void fn( Int32? num ) {
    if ( num != null ) {
        if ( num < 100 ) {
            if ( num % 2 != 1 ) { 
                //method code

或者类似于

代码语言:javascript
复制
void fn( Int32? num ) {
    if ( num == null )
        return;

    if ( num > 100 )
        return;

    if (!(num % 2 != 1)) 
        return;

    //method code

现在这个例子有点愚蠢,我现在可以听到了,为什么不把它们和||&&放在一起,在这个例子中是这样的。但是想象一下,如果数据验证比这复杂得多呢?你最终会得到过度缩进的结果,很难读懂代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9910505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档