代码设计之 Guard clause

2020-07-24 14:59:39 +08:00
 ChrisZou

说白了,就是不要一个方法里面只有一个长长长长的 if 大块,而是尽早 return https://chriszou.com/2020/07/24/guard-clause/

1948 次点击
所在节点    程序员
11 条回复
gantleman
2020-07-24 15:17:06 +08:00
逻辑判断是一种条件筛选,目的是处理筛选的结果。
看不懂尽快返回这个判断标准。
也看不出两个例子的区别。
guoptr42
2020-07-24 15:33:46 +08:00
个人很喜欢这种代码风格,看到项目里面一层套一层的 if 就头大。
kop1989
2020-07-24 15:37:16 +08:00
说白了就是要尽量把非目标情况放在 if 里当条件。然后一旦不符合执行条件就 return,要 if return if return do something 而不要 if do something else return
SmiteChow
2020-07-24 16:23:33 +08:00
卫语句 又称 提前返回 /提前退出
Kirsk
2020-07-24 16:27:36 +08:00
重构:改善既有代码的设计
autoxbc
2020-07-24 16:46:36 +08:00
其实有两个流派

一个是平铺派,缩进即地狱;
一个是结构派,花括号套一切;
互相说服是很难的

平铺派用 13 寸笔记本写代码,要求函数不能超过 40 行;
结构派用 42 寸巨屏,一眼就能扫到 120 行处的 return
ChrisZou
2020-07-24 19:33:09 +08:00
@guoptr42 是的
ChrisZou
2020-07-24 19:34:37 +08:00
@autoxbc 不一定是屏幕大不大的问题,下面的代码只要离开头的 if 远了,就很难一眼看出是 if 里面的还是 if 外面的。
lensko
2020-07-24 19:42:58 +08:00
不是每个程序员都会看《代码整洁之道》。
wty
2020-07-24 19:53:50 +08:00
这种写法有个问题就是容易漏掉资源释放,不过好在现在的语言多少带一些资源回收的功能了。要是像 c 语言里面 malloc free,这么写每个 return 前面要写一堆东西,还是有点头疼。。。

另外想起来个图 h 。tt 。p://cdn.en.wotype.com/wp-content/uploads/2014/07/hadouken-indent.jpg
ChrisZou
2020-07-26 11:47:55 +08:00
@wty 哈哈哈,这个图简直太形象了!

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

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

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

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

© 2021 V2EX