作者lovdkkkk (dk)
看板Soft_Job
标题Re: [讨论] 写三元判断式code review被打枪
时间Tue Dec 27 01:42:03 2022
最近公司读书会在看 Martin Fowler 的 Refactoring,
大概第九或第十章他有用到三元
sample code 大概是这样
const price = summer()? summerPrice() : commonPrice();
然後我们有看这串文章讨论了一下
讨论的结果是,我们觉得三元比较适合用在 "单纯,且明确是非 A 即 B 的情况"
ex const desc = score > 60? "及格" : "不及格"
而像上面 summer 的情况则比较不适合,
因为一年有四季,需求调整改着改着就变巢状了,
除非公司有明确的规范及 review 作业流程
而为了避免各种认知差异衍生的麻烦,直接禁用也是合理的
以上,刚好最近也有讨论到
※ 引述《a88241050 (再回头已是百残身)》之铭言:
: 小弟写java的
: 以前常常写三元判断式
: 就比如说
: String a;
: if(con) {
: a= "aaa";
: } else {
: a="bbb";
: }
: 这样就要占掉六行
: 所以我通常都是写
: String a= con ? "aaa" : "bbb";
: 从五行变成一行
: 在我看来简洁又方便
: 但最近给一个资深前辈code review的时候
: 他说不要用三元判断式
: 因为不好阅读
: 他工作那麽久也从来不用三元判断式的
: 而且java有很多套件都可以用来取代三元判断式
: 所以用三元判断式真的不好吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.37.200.26 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1672076525.A.678.html
1F:推 jason222333: 这是最恰当的用法 12/27 06:20
2F:推 Jichang: 那个就是bool 你举switch 的case 造你这说法 if 也要禁 12/27 06:47
3F:→ Jichang: 用 12/27 06:47
说到 if else 刚好也在同一次讲到,书中一段将许多 if 转成 guard 的部份,
我翻了一段有大量前置条件要判断的 code
if ...
return ...
十几个 early return 加一加也 50 行咧
不过又没有将它们转成 guard 的动力,
另外禁用这词可能太严重,
或许该说是尽量避免容易让程式变复杂的做法,
以及多在动手前先想想有没有更好的做法
4F:推 wulouise: 不懂你说的guard是什麽意思,Early return另一个名称不就 12/27 11:40
5F:→ wulouise: 是guard clause?把n个early return变一个? 12/27 11:41
6F:→ wulouise: 没有profile就做最佳化等於是浪费机会成本.. 12/27 11:42
是再包出去当後端 api 的 filter/guard 的意思,会再让主要项目明确一点,
JAVA/PHP 叫 filter,nodejs 的 express 算 middleware,
nodejs 的 nestjs 有个 Guard (目前在写 nestjs)
或者也可以包一个 validate/guard function/class 出去
跟效能无关,算是程式格式编排的调整,
目前是 50 行的 guard clause 後面接着 20 行的主要行为,
guard 比行为本身还多 XDD
但是包出去就得处理中间共用变数的传接,有点花大工做小改善的感觉,
所以不太想做
7F:推 viper9709: 推明确非A即B的情况+1 12/27 16:47
8F:→ justben: 不懂这有啥好吵 规定特殊写法一率注解就好了啊 12/27 18:38
9F:→ justben: 要秀可以 麻烦注解 done 12/27 18:38
同意没什麽好吵的,别人的意见当参考就好,
就好像有一种饿叫阿骂觉得你饿,
有一种单纯叫 Martin Fowler 觉得单纯,还觉得很不错写进书里推广,
可是有些人觉得不要用比较好
选择适合自己的做法就好
※ 编辑: lovdkkkk (114.37.196.215 台湾), 12/27/2022 23:33:34
10F:推 ohmylove347: 楼上不是,你会说的没啥好吵的,是因为只要有一套「 12/28 09:23
11F:→ ohmylove347: 统一做法」那就不会有争议,但现在的问题是如果要有 12/28 09:23
12F:→ ohmylove347: 一套统一做法,那是哪一套?统一做法能解决大家都知 12/28 09:23
13F:→ ohmylove347: 道,有争议的是该用哪个做法来统一 12/28 09:23