if-> return vs. if-> else效率

Yuv*_* A. 30 performance if-statement return

这可能听起来像一个愚蠢的问题,我犹豫要发布它,但仍然:如果某些东西只需要在某种条件下运行,哪些更有效:

一个.

if (condition) {
   // do
   // things...
}
Run Code Online (Sandbox Code Playgroud)

B.

if (!condition) { return; }
// do
// things...
Run Code Online (Sandbox Code Playgroud)

Kla*_*sen 25

它们同样有效,但B通常被认为具有更好的可读性,特别是在用于消除多个嵌套条件时.


Ste*_*ven 12

请选择最具可读性的东西.此级别的性能优化几乎不是问题.即使是真正对性能敏感的框架部分(例如.NET框架)也无法从这种微优化中受益.


Pee*_*Haa 8

真正的问题是.你真的在乎吗?

我拒绝!拥有更好的可读代码比做一些微优化更重要.


Tim*_* S. 7

虽然我同意您应该首先选择可读性,但我将继续添加一些信息:在 C# 中,没有区别。它编译为相同的东西(当通过构建发布模式进行优化时)。其他语言?谁知道呢,我确信他们中的一些人认为它有所不同,但您实际上需要担心它的可能性微乎其微。


The*_*ail 7

这是一种风格的东西.表现不相关; 两者都产生几乎相同的机器码.

关于风格的几点考虑:

如果您想避免"水平编程",您可能希望更喜欢B来避免嵌套条件.例如,如果要在不影响方法流程的情况下添加异常:

:

public String getDescription(MyObject obj) {
    if (obj == null) {
        return "";
    } else {
        if (!obj.isValid()) {
            return "invalid";
        } else {
            ...
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

B:

public String getDescription(MyObject obj) {
    if (obj == null) {
        return "";
    }

    if (!obj.isValid()) {
        return "invalid";
    }

    ....
 }
Run Code Online (Sandbox Code Playgroud)

但如果你问我,差异很小.绝对不值得'代码风格的战争'.

  • “性能不相关” 性能是否相关完全取决于用例。 (3认同)