问题
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.
- The second is more clear to understand
- 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