iOS开发细节 | "if else" V

作者: Lol刀妹 | 来源:发表于2017-10-26 22:53 被阅读525次

背景

最近敲代码的时候对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。其实这不是倾向不倾向的问题,也与代码长短无关。写代码是要让读代码的人能尽可能快地理解你的意图。

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

总结

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

相关文章

  • iOS开发细节 | "if else" V

    背景 最近敲代码的时候对if else和if return有点纠结,因为这两种写法可以互换,最开始我是用的if e...

  • iOS开发 UITableView 常用细节

    iOS开发 UITableView 常用细节 iOS开发 UITableView 常用细节

  • AES/ECB/PKCS5Padding解密出现"

    iOS AES/ECB/PKCS5Padding解密的时候,出现" 解析 "是转义字符,相当于...

  • iOS开发细节

    解决有的图片显示时只是一块颜色,而显示不正常的问题 //渲染UIImage*image = [UIImageima...

  • iOS开发之"崩溃"

    在开发中,系统难免会出现崩溃的情况,总是让我们也很崩溃 今天我们可以自己创建一个崩溃信息,也可以方便我们在以后的开...

  • iOS开发证书要点详解

    转自 iOS开发证书要点详解,ios证书详解 有细节修改。 首先,假设你使用过Apple设备(iMac/iPad/...

  • iOS开发小细节

    1.http 网络连接 1.在Info.plist中添加 App Transport Security Sett...

  • iOS开发常用细节

    前言 github:https://github.com/koknine (求star,follow ^_^) 之...

  • iOS开发细节记录

    UITapGestureRecognizer单击和双击事件响应 如果tap事件定义在同一个地方的通用方法是下面: ...

  • 《iOS Core Animation Advanced Tec

    作者:Nick Lockwood,iOS 开发界知名大V,代表作有iCarousel、iConsole。 目录 Ⅰ...

网友评论

  • 阿拉灯神钉:看到判断 == false 好不习惯...
    Lol刀妹:看了《禅与Objective-C编程艺术》之后都用"!"了:joy:
  • 捏捏你的脸:喜欢if return 感觉 脉络清晰点,别人也好看
  • 捏捏你的脸:可以的 群友,实力 卖萌顶一波
    Lol刀妹:可以,很给力:sunglasses:
  • 转交遇见陈绮贞:在能if return的情况下尽量使用if return,写代码方法及时返回是个好习惯。理论上讲,一个方法目的就是为了获取一个返回值,if return能让你更关注返回点。通过返回点if return将代码逻辑分成多块,结构化易于理解,而不会是if else那种意大利面形式。对于文中例子,当 (xxx == nil)时,我并不需要关注后面的代码,减少审视代码逻辑的时间和思维量。相信我,当你修改一个时间较久,逻辑复杂的代码的时候,你会庆幸自己用的是if return。
    Lol刀妹:有道理👍
  • yue博客:使用if return可以避免多个'if' 'else' 'else if'的嵌套,可以降低复杂度,而且逻辑上会清晰一些,我站if return:smile:
  • 推遍天下无敌手:这个.....根据具体的逻辑来选择吧,特殊情况处理就用return,相当于swift的guard,否则还是建议第二种,毕竟固定结构,易读易懂.总之码代码的时候这种小细节不应该去纠结吧,看着舒服,写的开心就好:smiley:
  • Zz7777777:swift的grant 就是类似的写法
    Lol刀妹:是的

本文标题:iOS开发细节 | "if else" V

本文链接:https://www.haomeiwen.com/subject/ycrlpxtx.html