if-else or early return

陌路散爱 提交于 2019-12-24 00:54:38

问题


Sometimes I like to use early return statements to prevent nesting if statement, which I find makes for less readable code.

I am wondering if there is any objective or overwhelming general consensus as two which of the following patterns is better practice? I don't think this is a subjective question, since what I am really asking is there a near objective preference.

void func() {
    if (a) {
        do b
    }    
    else {
        do c
    }
}

or

void func() {
    if (a) {
        do b
        return;
    }

    do c
}

回答1:


The first is better. Simply put,it helps another developer to understand that c compiles because the condition is false. It also prevents other people from making damaging changes to your code. That said,they are both correct and would both work just fine




回答2:


Frankly, I recommend the second one.

    1. The second is more clear to understand
    1. When some else modify the code more easy to understand is the first place. Maybe the first is more clear in math but not in human being.



回答3:


I would opt for the first version. I was actually given a lengthy explanation several years ago regarding this.

The two examples, as your wrote them now, are functionally identical. If the a condition be true, then the logic in the first if condition will execute, and the function will return. However, have a closer look at the second scenario:

void func() {
    if (a) {
        do b
        return;
    }

    do c
}

Right now, should the first if fire, the function would return, otherwise c would execute. However, consider that at some point down the line a programmer decides to refactor the method for some reason. If he were to take out the return statement, then the logic for c would also execute if a were true. This may seem far-fetched, but it could happen more easily than you might think. On the other hand, if you use a full if-else, then even a refactor of the if condition would never result in the c logic evaluating at the same time.



来源:https://stackoverflow.com/questions/40011048/if-else-or-early-return

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!