楼主:
a88241050 (å†å›žé 已是百殘身)
2022-12-14 00:43:12小弟写java的
以前常常写三元判断式
就比如说
String a;
if(con) {
a= "aaa";
} else {
a="bbb";
}
这样就要占掉六行
所以我通常都是写
String a= con ? "aaa" : "bbb";
从五行变成一行
在我看来简洁又方便
但最近给一个资深前辈code review的时候
他说不要用三元判断式
因为不好阅读
他工作那么久也从来不用三元判断式的
而且java有很多套件都可以用来取代三元判断式
所以用三元判断式真的不好吗?
不会耶我觉得还好,不要有巢状连续判断的话我能接受。
作者: tsao1211 (Sunday) 2022-12-14 00:50:00
如果短的话算很好读吧
作者:
xam (听说)
2022-12-14 00:53:00看情况,如果确定只会是简单状态变换就没差,但如果以后会变成are a2 a3,b1 b2那我甘愿一开始就用括号写
作者: dnabossking (少狂) 2022-12-14 00:55:00
缺点多多
作者:
TSW (翘班帝国)
2022-12-14 00:57:00逻辑简单或是很短的方法里面用短的三元OK其他地方就有人会看漏有些团队是避免争论所以完全禁用,所以不要用最省事
consistency 最重要 如果原本 codebase 就没有用它就不要用
作者:
humanfly (laguna@HEADSHOT)
2022-12-14 01:00:00code style有规定就别用,大家一致
作者:
qwe70302 (为何一到90分就会输)
2022-12-14 01:36:00就怕嵌套多层,跟鬼一样,看那一堆冒号直接中风
作者:
yyhsiu (hsiu)
2022-12-14 01:44:00占掉六行真的没那么夸张… 不然 IDE 也可以处理
作者:
BlacksPig (Black Handsome s Pig)
2022-12-14 01:56:00如果有参与开发的任何一个人不懂,那就不要
作者:
wulouise (在线上!=在电脑前)
2022-12-14 02:28:00要:多:潮:有?多?巢? ;问回传值为多少
作者:
Lhmstu (lhmstu)
2022-12-14 02:36:00要看实际例子才准
作者:
bill0205 (善良的小孩没人爱)
2022-12-14 06:02:00如果只有二元判断那还好 如果是多重判断 宁愿你写if else 甚至seitct更为好读switch
作者:
pttano (pttano)
2022-12-14 06:49:00程度不好还学人review 啥小,可怜喔
作者:
Royne (哲哉)
2022-12-14 06:50:00他的问题
作者:
CoNsTaR ((const *))
2022-12-14 07:01:00if else 加 log 方便,扩展逻辑也方便ternary 除了少打几个字以外有啥优点?
作者:
sakyle (Sakyle)
2022-12-14 07:01:00你可以用 String a; a = "bbb"; if(con) a = "aaa";这样只要四行,不过三元还是比较方便啦,不要三元里面又塞三元就好
作者: hidog (.....) 2022-12-14 07:32:00
遵守团队规范
作者: s06yji3 (阿南) 2022-12-14 07:33:00
现在各种dis同事长官
作者:
vencil (vencs)
2022-12-14 07:39:00占6行没那么严重,以后随需求扩充或调整,code乱长更麻烦
if-else里面只有assign一个变量的话 很ok啊
三元尽量只用一层就好你这个例子没啥问题,有问题的是像这种a = a > b ? a : b > c ? b : c三元套娃算是很严重的bad smell
作者:
timTan (用口头禅区分年记)
2022-12-14 07:44:00喜欢if else
作者:
loadingN (sarsaparilla)
2022-12-14 08:08:00行数还好,但长度最好注意
作者:
cokellen (cokellen)
2022-12-14 08:12:00我觉得 if else 人眼阅读速度较快
作者:
joery (Lin)
2022-12-14 08:22:00考量到未来异动弹性,及阅读性
作者: ericthree (如果 她这样动人) 2022-12-14 08:30:00
没有绝对的对错 看谁比较大就听谁的
作者:
YukiTW (ゆうき)
2022-12-14 08:36:00推Killercat的例子,用太多层就有点讨厌了
作者:
APTON (玮玮)
2022-12-14 08:38:00单纯的T/F就算了,但是就是有人会继续接下去写。三元判断里面再接一个三元判断,所以建议少用。
作者:
gs8613789 (Shang6029)
2022-12-14 08:44:00不会比较好懂+1
if else 一票,除非公司现在和未来都是找高手
作者:
testPtt (测试)
2022-12-14 08:57:00有注解传回什么就好 基本不会去追内层
作者:
sharek (...)
2022-12-14 09:04:00容易变得难阅读,真的觉得很多行用function 包起来
作者: linzomaa (随便) 2022-12-14 09:28:00
短的很好读啊,不然就加个注解
作者:
chchwy (mat)
2022-12-14 09:46:00我喜欢用,有时候会 让程式变得好阅读
作者:
bill0205 (善良的小孩没人爱)
2022-12-14 09:49:00有没有人看过这样写的 var temp = con ? this.a() : this.b(); 看到这种有点不知道该不该给他过
作者: t64141 (榕树) 2022-12-14 09:59:00
简单时好用,太复杂不好,但怎样算太复杂每个人都不一样
作者:
testPtt (测试)
2022-12-14 10:13:00我觉得写这个都不行的大概也不能接受lambda
作者:
jobintan (Robin Artemstein)
2022-12-14 10:20:00Ninja Code?不过公司有Code review与coding style规范还是好事……
两层就写啊 写太多层才会不知道干嘛 而且应该要包起来
作者: aa06697 (todo se andarà) 2022-12-14 10:26:00
要看多长
看团队规范啊 有 coding guideline 就照规定走没规范就先写个 guideline
作者:
q00153 (TB)
2022-12-14 10:58:00私以为,一个东西会存在就是有它的用处,适合的时候就用适合的方法,极端的只用或不用都只是一个对自己有利的借口罢了。
谈到 coding style 话语权才是唯一真理
作者:
jobintan (Robin Artemstein)
2022-12-14 11:04:00Indeed,只有Lead字辈,才能决定Coding style。
作者:
tsairay (火の红宝石)
2022-12-14 11:12:00看三元判断式里面的内容如果你的条件很长而不是单纯的if a=b这种那的确就会难阅读
作者: bab7171 2022-12-14 11:19:00
这怎么不好阅读??
作者: zxcasdjason1 (nice_Sky) 2022-12-14 11:29:00
写法就讨论 团队都能配合就好
作者: dnabossking (少狂) 2022-12-14 11:37:00
尚未看到好的回答
作者: zxcasdjason1 (nice_Sky) 2022-12-14 11:39:00
蛮常见到新人会烦恼,像是看到前人的用 if-else if盖个20几楼,纳闷怎不用 switch-case 重写这类的问题,经验上,我认为重构效益大于局部写法修正,看得懂且性能差异不大的话别纠结太多
作者:
testPtt (测试)
2022-12-14 11:41:00通常我是左式ok就不care右式 除非右式内容常常改再分出来
作者: zxcasdjason1 (nice_Sky) 2022-12-14 11:51:00
原po 提得状况,我认为可以使用,但如果是 Stringa = cond1 ? "a" : (cond2?"c" : "d") 这种还是展开来写比较好
作者: somefatguy 2022-12-14 11:57:00
你这个case写if else的我会叫他改成三元
作者:
knives 2022-12-14 12:00:00以可读性来说,肯定是不行的
作者: somefatguy 2022-12-14 12:00:00
多层别用三元,但用if else也不好看,要包function用early return
作者:
knives 2022-12-14 12:02:00其实我是觉得是那个资深前辈看不懂,如果一开始是很简单的两个简单条件就还好
对于一层判断+assign 三元可以一眼就知道要做什么 熟悉这种写法后 读if-else的负担还比较大一点点
你前辈的理由没有说服力 以这例子来说并没有较难读但如果你团队里看code的都像你前辈这样 那还是别用
作者:
NDark (溺于黑暗)
2022-12-14 12:45:00如果有商业逻辑,宁愿分清楚不要省行数
作者: chrischen (一个人的长假) 2022-12-14 13:11:00
宗教问题 不会有结论
作者:
veryGY (肥肠机歪)
2022-12-14 13:28:00能力太差的才会看得慢 高手都是这样写才快
作者:
iamshiao (CircleHsiao)
2022-12-14 13:46:00你是 owner 爽怎么写都行,不是那就人在屋簷下,我自己是蛮喜欢三元的
作者: ku399999 2022-12-14 13:49:00
看到很多人连出现三元都不行我还蛮惊讶的 但照团队规范走也很重要
不用惊讶, 80/20法则 业界不是学校, 也不是在比行数
作者: worf 2022-12-14 14:11:00
不用省行数 ~重点是看起来怎么样
除非向lamba那种重于流程表达的写法,不然你一般判断简写没啥差,判断太复杂难看,判断简单就只是自己看顺不顺眼
作者:
pot1234 (锅子)
2022-12-14 14:25:00看了很烦@@
这种短短都没差,最怕是超过两个萤幕宽度的三元...逻辑都一样,易读性差很多,我会选择易读性
作者:
htury (冰点)
2022-12-14 14:42:00行数不是重点,重点是整个团队易读好维护可扩充今天再来个ccc条件,你怎么办?还不是要if else或when
作者:
windmax1 (I do my best)
2022-12-14 15:01:00可读性跟效能才是最大重点 其他都次之
作者:
jackflu (jackflu)
2022-12-14 15:01:00所以他推荐怎写? 有很多套件可以取代,可以举例一下吗?
作者:
windmax1 (I do my best)
2022-12-14 15:02:00跟你前辈沟通看看 简单易懂的三元没啥问题
作者: jerry840622 (小哥) 2022-12-14 15:06:00
只有一层感觉还好
(condition) ? "YES" : "NO" 这种很好用阿 要取代真的是要多好几行code 看了就阿杂就跟goto很好用 改用if-else就是要多好几行
作者:
acgotaku (otaku)
2022-12-14 16:06:00我以前也因为这样常被挡不过其实应该只是为了 整份coding style 统一而已这种被挡还好啦,style 问题都最好解决最难解决的是思绪问题,每个人对pattern 喜好不一样这种观念差异造成mr过不了。才最头痛
公司就是降...你写的程式要让不同智商的人能看懂...
作者: kshieh 2022-12-14 16:35:00
题外话,python 的 list comprehension 大家的见解是?
作者: s06yji3 (阿南) 2022-12-14 16:37:00
个人2层以内接受。但是2层已经不太好读了
作者:
testPtt (测试)
2022-12-14 17:13:00很多发明就是要1行:list.first(x==1).first(x==2)...拆开来写感觉就很弱
作者:
TSW (翘班帝国)
2022-12-14 17:30:00perl系列的可以忽略这串XD
作者:
Tix (Sean Chen)
2022-12-14 17:43:00if else也可以写成一行啊,呵呵
作者:
Burwei (系馆守护神)
2022-12-14 17:54:00有规范照规范,没规范不刁难
作者:
NikonD5 (泥坑D5)
2022-12-14 18:04:00变得很难读很痛苦
作者:
wulouise (在线上!=在电脑前)
2022-12-14 18:17:00goto现在c++23有scope_exit可以用啊喔等等这串java
作者: internetms52 (Oaide) 2022-12-14 18:29:00
一层可以,多层不要,话说你们是没有更重要的东西可以review了吗…
选几个估狗查东西时看顺眼的 blog 爬他们的文章学跟练或者历年铁人赛评价高的找有兴趣的爬回错篇 0rz
你这个例子不用三元 之后会有人搞到a变成 null reference
作者:
EKman (攻略)
2022-12-14 21:33:00省行数可以干嘛?空白行都拿掉不是更省
作者: jasonwung (路人JJ) 2022-12-14 21:39:00
写长一点真的很难看
作者:
Kimheeche (Kimheeche)
2022-12-14 22:04:00还好啊 看团队而已
作者:
WWIII (东邪西毒)
2022-12-14 22:14:00你这样很容易就超长 笨方法
作者: SRmoisTEH (CBeneath) 2022-12-14 22:33:00
三元用习惯很简洁吧...
作者: zebra10029 2022-12-14 22:56:00
真的是宗教问题
作者:
purin88 (原来我是愤怒的乡民)
2022-12-14 23:49:00老鸟太弱了,叫他做leetcode,leetcode十分常用三元
作者:
wugesmin (我是一只鱼)
2022-12-15 00:43:00三元很好用,可以用的很漂亮
作者:
mrsix (六本六十六)
2022-12-15 00:45:00三元判断式若把一堆条件写成超出萤幕的一行,之后也是得拆分问号冒号一行一行来维护。如果遇到那种三四个判断式用一行三元判断式实现而且没有括号的,这种得非常小心,因为后续若要扩充功能很容易出事。当然最精彩的就是把巢状用一行三元判断式搞定
作者: adsl12367 (adsl12367) 2022-12-15 01:07:00
单层没啥问题 蛮常用的 多层三元在debug容易造成困扰该拆的还是要拆
作者: Sasha0720 (Sasha莎夏) 2022-12-15 02:26:00
这种小事居然可以这么热烈讨论
作者: dooooris 2022-12-15 02:30:00
一层可 常用的话会反射动作 秒读懂多层不要
这件事你上级主管说什么就说什么 sideproject你自己爽就好*说什么就是什么
作者: MonyemLi (life) 2022-12-15 07:41:00
每间都不同,没什么对错。google或speing程式码在你们code review会过吗?
code跑起来没问题,帮你maintain的人阅读起来没问题,那就没问题。没有对错。协同合作不是写一些自己爽的然后别人痛苦的事情。
作者:
a159753 (大叔)
2022-12-15 09:29:00看规定
作者: gogogogo3333 (gogogogo33333) 2022-12-15 10:00:00
除非是团队共识,不然一般不用
作者: nicepeter (批特) 2022-12-15 10:26:00
可以用,逻辑简单的话不影响readability
作者: superpandal 2022-12-15 18:07:00
java已经够囉唆了 一两层三元还可以 以前我刚入行都被这样推荐 但是业务逻辑多了就知道无脑if else的坏处 如果是golang我可以接受没三元 本身就比较简洁
作者:
lauto (老头)
2022-12-16 11:53:00你现在是在工作,不是自爽
作者:
m9j002 (飞黄腾达)
2022-12-16 13:16:00就跟一夜情一样,讲好就好了
糟糕,我很常写巢状的三元,不过有换行排版应该还好吧
作者:
nfsong (圖書館我來了)
2022-12-16 14:57:00拆开比较好放中断点
作者:
pig0038 (颗颗)
2022-12-16 15:45:00你前辈就是属于永远不会碰 GO/kotlin 的那种人还是块陶吧我猜你们公司还停留在 java7,用 lambda 他还不马上骂脏话
作者: superpandal 2022-12-16 19:33:00
工作就是看上头爽不爽 能不能接受 如果上头喜欢这样你不爽也得用 这是双方面的 但如果这都不能讲那也就没有所谓的沟通 基本上都有一些公司所谓的沟通是这样很想讲这不叫沟通好吗
作者:
dalbuhr (残月之肃)
2022-12-17 00:06:00说难读的应该是文盲吧
作者:
Dnight (暗夜)
2022-12-17 11:56:00难读懂的应该是说这种写成一行吧 result=a?b?c:d:e?f:g不是说看不懂,但是写成if else要看懂比较快阿
作者:
wild0522 (wild0522)
2022-12-17 16:51:00程式要写给别人看懂,不是自己
作者:
pooznn (我~~~是来被打脸滴!!!)
2022-12-17 17:27:00单纯 判断0、1写一行可能大家比较能接受 不然改起来很麻烦
作者: ku399999 2022-12-18 14:07:00
那表示说难读懂的连表达都不会啊 那叫多层的难读懂
作者:
chupiggy (機器人)
2022-12-19 22:49:00最近看Software Engineering at Google 作者就有讲G社内部就避免这种使用,因为你的code会被其他team阅读应该要让其他人对你的code一目了然,炫技不是第一要务
作者:
zenuo (坚持到底永不放弃)
2022-12-20 09:46:00看你的条件内容是怎样
有些人为了炫技写到整个code是很短没错但可读性爆低比长code还难开发团队开发遇到硬要拿leetcode上面那套炫技手法来写code的很痛苦有时候多个一两行就会好读许多却硬要为了少那一行把整个code变的很诡异
作者:
Isaea (Isaea)
2022-12-22 12:10:00我觉得不要装B乖乖写多行一点,注解多一点详细一点
我有点好奇巢状三元可读性有很差吗?我常写没觉得有阅读问题?还是你们看到的巢状三元都用换行缩排来排版?都没换行缩排来排版
作者:
fatb (胖逼=口=)
2022-12-23 16:29:00我觉得是习惯问题 code style也是内部讲好就好另外能把code写到人家看不懂也是你的本事
看con 很直观可以 稍微需要想的就不要 看很快的时候很容易想错 ex err == null ?
作者: lovetzuyu23 2022-12-25 01:30:00
看不懂就请他写注解
作者:
Acetoxy (阿斯)
2022-12-25 22:34:00我觉得写三元没比较厉害
重点是有没有办法让人比较快看得懂这种简单情况下的东西,挑人的code style 根本呵呵..真的要强维持,自已写东西进 code style checker啦
作者: a123232 (oppai) 2021-01-04 01:09:00
逻辑简单,三元很好看懂,复杂就不要
作者:
wu0h96 (喜感)
2021-01-20 01:33:00我也遇到一样的 资深工程师跟我说太长可读性低
作者: dein0522 (Dennis) 2021-01-24 07:07:00
ternary那么简单,居然还可以讨论这么多= =