据说优秀的代码没有 else?

2018-04-18 18:53:08 +08:00
 GoPHP

多个 if else 嵌套的代码估计大家都见过。。。头疼!

但是其实很多 if else 可以简化成一个 if,不需要 else,举个例子:

$books = getByAFunc()
if($books) {
   do something ...
   return something
}else {
   do something ....
   return something
}

看上去没什么毛病,但是根据业务需求,大部分是可以这么写:

if($books) {
     do something...
     return something
}
do something...
return something

这只是举个例子,很多时候满足条件的只有一种情况,那我们就可以针对这一种情况处理,其他情况直接 return !

还要一种写法是先处理可能出现的异常错误,然后最后执行下来的就是正确情况!

16849 次点击
所在节点    程序员
147 条回复
noNOno
2018-04-18 19:11:19 +08:00
个人比较认同:优秀的代码中 if 必定有 else
"
每个 if 语句都有两个分支的理由是:如果 if 的条件成立,你做某件事情;但是如果 if 的条件不成立,你应该知道要做什么另外的事情。不管你的 if 有没有 else,你终究是逃不掉,必须得思考这个问题的。
"
引用自:http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy
whx20202
2018-04-18 19:29:43 +08:00
@noNOno #1 感谢分享这篇文章
gouchaoer
2018-04-18 19:30:29 +08:00
python
whx20202
2018-04-18 19:36:15 +08:00
@noNOno #1 话说你知道还有什么书,能讲讲代码解耦,可读性这些内容吗?我最近一直在思考这方面
MinQ
2018-04-18 19:37:27 +08:00
@whx20202 设计模式方面的书
linthieda
2018-04-18 19:37:28 +08:00
优秀的代码没有 if
MinQ
2018-04-18 19:37:51 +08:00
@linthieda 是的我们一般用 switch (手动滑稽)
noNOno
2018-04-18 19:51:46 +08:00
@whx20202 哈哈,没,我看这方面的书比较少.
wellsc
2018-04-18 19:54:22 +08:00
据说优秀的代码没有 try exception,我到现在也没懂。
noNOno
2018-04-18 20:07:02 +08:00
@linthieda
@wellsc
优秀的项目不需要代码,推荐给你们:
https://github.com/kelseyhightower/nocode
guog
2018-04-18 20:07:57 +08:00
@wellsc 优秀的代码怎么会有 exception(滑稽
l30n
2018-04-18 20:08:40 +08:00
优秀的代码只有一个 return。
wizardforcel
2018-04-18 20:10:06 +08:00
@wellsc golang 了解一下
zj299792458
2018-04-18 20:13:22 +08:00
优秀的代码只有一个 return+1,曾经想在某个函数返回前加一段逻辑,却发现这个函数的中间花式 return,最后不得不找出每个 return 加一遍。
wdlth
2018-04-18 20:14:05 +08:00
单出口党和多出口党的竞争
wellsc
2018-04-18 20:14:56 +08:00
@guog #11 我也不懂啊,群里的 C++ 大佬说的,我一直没想明白
wellsc
2018-04-18 20:15:24 +08:00
@wizardforcel #13 kotlin 也没有
MinQ
2018-04-18 20:23:55 +08:00
@wellsc 因为妥善处理了所有可能出错的情况,不需要再另外捕获错误了
liuminghao233
2018-04-18 20:26:04 +08:00
有这样想法的人肯定没用过 goto
cs923
2018-04-18 20:29:43 +08:00
好无聊的讨论

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/447915

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX