if-else or early return [closed]
Asked Answered
R

3

7

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
}
Runthrough answered 13/10, 2016 at 1:56 Comment(3)
I've always been under the assumption that return statements, where possible, should be limited to being used at the end of the function because it's easier to read and comprehend the flow. Others may disagree with that, but that's why I'd opt for the first snippet.Lashay
I think it quite similar with this #37207Pirbhai
Duplicate of softwareengineering.stackexchange.com/questions/18454/… The question on softwareengineering has higher quality answers.Globose
P
0

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

Phytology answered 13/10, 2016 at 10:3 Comment(1)
I disagree, this first option is definitely bad. softwareengineering.stackexchange.com/questions/18454/…Plunder
P
9

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.
Pegram answered 19/10, 2018 at 1:15 Comment(0)
E
0

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.

Earthstar answered 13/10, 2016 at 2:3 Comment(0)
P
0

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

Phytology answered 13/10, 2016 at 10:3 Comment(1)
I disagree, this first option is definitely bad. softwareengineering.stackexchange.com/questions/18454/…Plunder

© 2022 - 2024 — McMap. All rights reserved.