》关于代码中按条件返回布尔值怎样写更好这件事《

2021-12-04 15:00:50 +08:00
 wednesdayco

V2 的老哥们倾向哪种写法?

2545 次点击
所在节点    问与答
29 条回复
Jooooooooo
2021-12-04 15:05:49 +08:00
if else 最朴素的写法呀, 清晰永远都是第一要务.

后面改这块逻辑的人很可能还是你自己.
autoxbc
2021-12-04 15:29:14 +08:00
() => {
  switch(true)
 {
   case exp1 :
   case exp2 :
   case exp3 :
    return false ;
 }

  return true ;
};

这是我觉得最工整的写法
Building
2021-12-04 15:30:54 +08:00
guard … else {
return
}

guard … else {
return
}

……

return true
binux
2021-12-04 15:34:24 +08:00
你为什么要写或,写与条件不是更清晰吗?
cmdOptionKana
2021-12-04 15:45:02 +08:00
我选第二种,并且会加注释。第二种也更容易加注释。
noe132
2021-12-04 15:49:54 +08:00
MrGba2z
2021-12-04 15:57:07 +08:00
我个人的话:把第一个的 if 改成真值 > 第二个 > 第一个
wednesdayco
2021-12-04 16:04:50 +08:00
@cmdOptionKana 感觉不是更方便注释,而是条件下有新增逻辑需求的时候不用拆条件。
cmdOptionKana
2021-12-04 16:26:36 +08:00
@wednesdayco 注释也很重要啊,第一种,以及 #6 @noe132 给出的写法,注释要怎么写,很难描述。

如果发现用人类语言很难描述,通常就可能有问题,而第二种很好描述 “如果审批不 OK ,就不用看别的因素,必然是个无效价格”……如此这般,每一个判断都非常清晰。
ZE3kr
2021-12-04 17:27:34 +08:00
return !(item.approvalStatus!==
STATUS.OK ||
item.isEffective Il
(moment(orderTime)
<= moment(item.endTime) && moment(orderTime) ›= moment(item.startTime)))
zxCoder
2021-12-04 18:29:34 +08:00
我会选第二种,但是为什么不加花括号!!!!!!!!!!!!!
ch2
2021-12-04 20:06:38 +08:00
第二种可读性更好
bwangel
2021-12-04 20:29:58 +08:00
第二种啊,第一种条件多了,容易写成箭头型代码。

五六层缩进,不好看
cpstar
2021-12-04 20:32:46 +08:00
def rtn = true;
if rtn=...
else if rtn=...
else if rtn=...
else rtn=...
return rtn

哈哈
Innovatino
2021-12-04 20:44:24 +08:00
我觉得第二种更好。
但是我觉得把需求写在方法上面,把注释写在条件上面是更好的实践。
kaiki
2021-12-04 22:33:47 +08:00
我经常 return (xxx) ? true : false;
想着反正以后不会再去维护这块了
newtype0092
2021-12-04 22:53:48 +08:00
@noe132 这种为形式而形式了吧,本来一个条件就可以中断了,没必要把所有条件都算完。
非要追求这样的格式的话也应该分别包到闭包里。
newtype0092
2021-12-04 22:57:07 +08:00
第二种是合理的,条件多的时候按类型分开,可以确定 return 的提前 return 出去,这样后面条件越来越简单越来越清晰。
第一种一个条件连一大串,看得眼睛花了都。


if body 要加大括号 要加大括号 要加大括号
ZE3kr
2021-12-04 23:11:45 +08:00
@kaiki 你这直接 return xxx 就行了
kaiki
2021-12-04 23:13:02 +08:00
@ZE3kr 差不多,只是我喜欢用:?缩写,能直接返回布尔值也没必要专门搞一道

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

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

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

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

© 2021 V2EX