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

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

总结

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,268评论 19 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,856评论 0 9
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 看过电影《About time》后,彻底被这首歌洗脑了。听到这首歌就会想起主角他们每天同行在地铁中,动作神情里流露...
    核桃人阅读 1,170评论 0 0
  • “冷风夹着细雨打在明曦稚气未脱的脸庞,然后和着脸上的泪水一起滴落,无声地没入脚下的土地,一次次的坚持换来的,只有一...
    繁华故城阅读 252评论 0 1