转载

iOS开发细节 | "if else" VS "if return"

iOS开发细节 | "if else" VS "if return"

背景

最近敲代码的时候对if else和if return有点纠结,因为这两种写法可以互换,最开始我是用的if else,后面看别人的代码很多用的if return,然后我也开始用if return,然而慢慢我感觉用if return好像有时还不如用if else来得更直观形象。于是我请教了一下老司机。

问题如下:

if else与if return的选择问题

这两种写法可以互换,如下:

if ([responseDict[@"result"] boolValue] == false) {
    [CQHud showToastWithMessage:responseDict[@"msg"]];
    return;
}

/// code

等效于:

if ([responseDict[@"result"] boolValue] == false) {
    [CQHud showToastWithMessage:responseDict[@"msg"]];
} else {
    /// code
}

在实际开发中我们如何做出选择?

得到的答案

1. 来自sunnie花儿的回答:

第一种吧,理由:看着舒服

点评:前端妹纸跨领域回答,值得关注。

2. 来自小风哥的回答:

第二种吧,它们是一对儿

点评:好好反思下为什么你会被卖黄片的盯上。

3. 来自馒头君的回答:

看下面代码的逻辑吧。。

如果你的 //code 只是在 else 里,一般说明这是 if 的另一种情况,写在里面比较好,合乎逻辑。

但是如果这个 if 只是个判断,遇 false 就return,不用走下面的逻辑,那么 写在外面比较好。

你看下以下代码:

if (xxx == nil) {
    NSLog(@"xxx must not is nil");
    return;
}
// code....

if (xxx) {
    NSLog(@"xxx not is nil");
    // code....
}else {
    NSLog(@"xxx is nil");
    // code....
}

点评:segmentfault里唯一一个正经回答,结合代码清晰阐释,毫无疑问他的是最佳答案。

4.来自bestswifter的回答:

1.和 if 中的代码无关(准确的说是我没理解为什么 if 代码对风格选择会有影响)

2.取决于 Code 是否完全能放进 else 里,这里默认可以。

3.建议第二种,if else 更强调一种非此即彼的关系,能够从代码层次上看出来两个逻辑是互斥的,写 return 则是另辟蹊径,得到了相同的效果,但是没有 if else 直观。

4.不要和 true/false 作比较,这是多余的。

点评:默默围观大神回答,不敢出声。。。

5.来自J_Knight_的回答:

如果这两组代码是互斥关系,建议使用if&else;如果是要首先排除某些特殊的错误情况,建议使用return。其实这不是倾向不倾向的问题,也与代码长短无关。写代码是要让读代码的人能尽可能快地理解你的意图。

点评:“写代码是要让读代码的人能尽可能快地理解你的意图”。 当你纠结时,不妨换位思考一下。

总结

到底如何选择,相信你已经有了答案。

正文到此结束
Loading...