
var isOperate_BangDing = false; var isOperate_ShuaXin = false; if ("bangDing".equalsIgnoreCase(operateName)) { isOperate_BangDing = true; } else if ("shuaXin".equalsIgnoreCase(operateName)) { isOperate_ShuaXin = true; } if (isOperate_BangDing == true || isOperate_ShuaXin == true) {... 1 Leviathann May 11, 2022 废话文学家 |
2 Aliberter OP 明明 3 行就写清楚的事,愣是嗦了十几行,给我整无语了 var isOperate_BangDing = "bangDing".equalsIgnoreCase(operateName); var isOperate_ShuaXin "shuaXin".equalsIgnoreCase(operateName); if (isOperate_BangDing || isOperate_ShuaXin) |
3 Aliberter OP @Leviathann 精辟 |
4 bugFactory May 11, 2022 为什么要设两个变量,直接 if ("bangDing".equalsIgnoreCase(operateName) || "shuaXin".equalsIgnoreCase(operateName)) { } 不行么? |
6 cmdOptionKana May 11, 2022 英语不太好,但就这点代码体现不出水平高低,他只是选择了非常 verbose 的表达方式而已。好处是看到这句 if (isOperate_BangDing == true || isOperate_ShuaXin == true) {... 的时候很舒服,比挤在一起看起来舒服多了。 |
7 JKeita May 11, 2022 变量名风格也看得难受 |
8 spicecch May 11, 2022 谁写的,刁他啊 |
9 happinessnch 这段代码不管多烂,也体现不出什么。 提出这个问题的人要想一下,为什么要纠结这个事情。 |
10 cpstar May 11, 2022 一行变七行,这 KPI ,杠杠的 |
11 liangkang1436 May 11, 2022 via Android 你实话实说,你们公司,是不是把代码量考虑进绩效里面了 |
12 aneostart173 May 11, 2022 @bugFactory 你那样每次都要算一次 equalsIgnoreCase |
13 Cu635 May 11, 2022 看工作量的考评方式。 如果工作量考核是用的代码行数或者代码大小(毕竟一个字符要占用一个字节嘛),那么这个代码就是优秀的。 |
14 cpstar May 11, 2022 正经应该: let operators = ['bangDing','shuaXin']; if (operators.includes(operateName)) { 当然了,这里边没办法解决大小写的问题,可以再写一个大小写转换的 func |
15 BreadKiller May 11, 2022 我只吐槽一下 英文和拼音最好不要混着写 |
16 theqiang May 11, 2022 via Android 不看逻辑光看这变量名,驼峰下划线拼音能把人看傻 |
17 ersic May 11, 2022 没啥问题啊,写的挺清楚的。 单看这几行好像挺嗦,但我觉得后面 isOperate_ShuaXin 跟 isOperate_ShuaXin 还会用到的吧。 |
18 V2LIYANG May 11, 2022 对于后来的维护者会非常友好 |
19 tbxark May 11, 2022 可能一开始不是这样写的后来需求改来改去就开始摆烂打补丁了 |
20 mlhadoop May 11, 2022 遇到这种问题问自己 1. 是老板不 2. 能正常跑不 3. 能发帖摸鱼不 4. 关机 |
21 Aliberter OP @bugFactory 一是可读性,二是下边的方法还要用这个变量 |
22 cht May 11, 2022 linter 都过不了… |
24 Aliberter OP @cmdOptionKana sonar 的代码规范里不允许这么写,这么写会报警 |
25 RRL May 11, 2022 精梳!这段代码越看越废话,一般人根本写不出来。 |
26 lakehylia May 11, 2022 == true 是什么鬼 |
29 Aliberter OP @happinessnch 因为这是他写的代码,他现在让我去改,我看着难受,想吐槽 |
30 Aliberter OP |
34 cmdOptionKana May 11, 2022 @Aliberter 领导写的,就很好理解了,几乎可以肯定他就是像写伪代码一样,既不考虑语言特性,也不综合考虑上下文,就是想到一句写一句,这样可以写得很舒服,大脑低电量模式半梦游状态就可以写了,舒舒服服写完找属下改成风格良好的代码就行,反正他自己舒服。 |
35 anonydmer May 11, 2022 有没有可能他是觉得比楼主 2 楼的方法在运行时会可能少一次计算量? |
36 pengtdyd May 11, 2022 垃圾,建议进厂打螺丝! |
37 glaucus May 11, 2022 一看就不是 IDEA 写的 |
38 glaucus May 11, 2022 哦才看见是前端,当我没说 |
39 AllenHua May 11, 2022 告诉他下划线 underline 和小驼峰 low camel 两种风格最好不要混用,还有最好能用英文单词就不要用中文全拼…… |
42 libook May 11, 2022 变量名 is 开头表明是布尔型,这个感觉是加分项; 驼峰+大小写取决于项目整体命名规则; 用英文还是英文拼音混合看团队约定。 else if 后面没有 else 处理异常情况,或者没有双 false 的处理情况,比如 operateName 既不是 bangDing 又不是 shuaXin 是否需要处理。 因为 operateName 只能有一个确定的值,虽然不一定 bangDing 或 shuaXin ,所以给两个变量赋值的部分应该是可以简化的。 下面 if 判断 true 的情况,可以直接判断变量,不需要再写“== true”。 要不要把两个变量直接省略,然后把两个 equalsIgnoreCase 直接放到最下面 if 条件里,取决于下文是否还会用到这两个 equalsIgnoreCase 结果,当然 if 条件太长可读性也未必好。 |
43 laucenmi May 11, 2022 又不是不能用 /狗头 |
45 huntagain2008 May 11, 2022 #2 小白反正看了几分钟硬是没看懂代码的意思,但是看了楼主的代码 2 秒就明白了意思。 |
46 Leviathann May 11, 2022 @anonydmer 那也应该是 var isOperate_ShuaXin = isOperate_BangDing ? false : "shuaXin".equalsIgnoreCase(operateName) |
47 anonydmer May 11, 2022 非要不考虑上下文只考虑代码行数么? if (Stream.of("shuaXin", "bangDing").anyMatch(operateName::equalsIgnoreCase)) {} 哦,还要加个 operateName 为空的 guard 语句,两行顶天了。 |
48 bestwaytowait May 11, 2022 kpi master |
49 fredli May 11, 2022 水平很差,看过的代码太少,模仿也不会 |
50 acehowxx May 11, 2022 via Android 只看这 1 几行,我觉得还好吧。最后不用==true 判断,再有就是应该定义个常量进行比较而不该用魔法数。至于变量命名,英文不好没办法啦。 |
52 Suddoo May 11, 2022 via iPhone 不清楚需求,别乱动屎山, 改完,测试提一个二次引入的 bug ,那就尴尬了 |
53 Leonard May 11, 2022 为什么英文和拼音混用,驼峰和下划线混用 |
54 binux May 11, 2022 你们都没写过 switch...case 吗? |
58 chenmoGnar May 11, 2022 把变量定义提前摆出来不是很好的习惯吗,楼主的改进版也仅仅是把定义和计算放在了一起而已;相反我觉得把变量类型声明成 boolean 看着更舒服 |
59 sarices May 11, 2022 主要是代码风格有问题 |
60 kooze May 11, 2022 可能按代码量考核绩效吧 |
61 alexsunxl May 11, 2022 @chenmoGnar 卧槽。 你有毒啊。if xx 里面设=true ,多写废话很好玩啊。。 |
62 cLoudvSnOw May 11, 2022 也没啥问题吧。楼里说这是屎山,是没见过烂的项目还是自己写的每一句代码都优美精简犹如标准库? |
63 TWorldIsNButThis May 11, 2022 via iPhone @chenmoGnar mutable 是可维护性和可读性的大忌 所有的变量声明都应该尽可能做到声明即初始化 |
64 gitgabige May 11, 2022 真没想过他的文化水平这么低 |
65 diggzhang May 11, 2022 看了一会儿才反应过来是 绑定 和 刷新。 |
66 darknoll May 11, 2022 表达的意思清晰,非常好,接手的人一看就懂 |
67 zooo May 11, 2022 |
68 potatowish May 11, 2022 via iPhone 初学者入门水平 |
69 killva4624 May 11, 2022 楼主小心你的领导也上 v2 |
70 gps949 May 11, 2022 就是格式不大好(对齐不易于阅读),其他的水平非常高! 作者充分考虑到现在内存、CPU 资源冗余,用空间和时间开销,换来了代码理解复杂度和后续可扩展性的大幅提升! 试想如果写成了类似: if ( "bangDing".equalsIgnoreCase(operateName) || "shuaXin".equalsIgnoreCase(operateName) ) {... 代码文本及其逻辑被压缩后,空间和时间开销是小了,但是如果后续要利用操作名结果,每次都还要忽略大小写比较一次,就得一直抓着这个操作名变量不放,这个变量作用域就可能跨几十上百行。另外,这个变量也可能被其他函数 /方法异步修改,如果后续有些其他改动使用,还可能涉及对这个变量读写互斥操作的考虑,反观这个写法会让该次读写结果固定,后续涉及加锁仅需在这两个布尔变量取值处加锁即可。 总之,这段代码简直大神级别操作,谋虑甚远。 doge |
72 guanhui07 May 11, 2022 太嗦,命名太差 。 |
73 yolee599 May 11, 2022 via Android 如果要重复使用 isOperate_BangDing ,可以稍微提高一点执行效率,字符串比较是比较耗时的操作 |
74 whyzp2019 May 11, 2022 个人看法,并不排斥先定义变量并初始化之后,根据需求逻辑改变变量值并使用变量,虽然当前看来很繁琐,但是方便修改和维护,哪天 bangding 要改成啥东西,不至于漏掉某处。但是不得不说,这个命名方式,真牙疼 |
75 zhanglintc May 11, 2022 肯定不算好,但是也凑合看吧,起码还是比较清楚的。 |
76 liuzhaowei55 May 11, 2022 via iPhone 很不爽楼主这种提问的方式,代码没有上下文,没有业务背景根本讨论不出来个啥。 这段代码编译之后完全没有啥问题,编译器自己会优化。 |
77 ytll21 May 11, 2022 kpi 拉满,这段代码我给 9 分,不给 10 分主要怕使人过于骄傲。 |
78 shyrock May 11, 2022 这代码还行,至少不到吐槽的标准。 命名和代码结构至少是清晰的, 真恶心的是让人看不懂的代码。 |
79 7gugu May 11, 2022 via iPhone 还行,凑活着用吧 |
80 chenmoGnar May 11, 2022 @alexsunxl 这确实没必要,可以简化下 |
81 chenmoGnar May 11, 2022 @TWorldIsNButThis 是不是简单的逻辑要做到声明即初始化;因为我看 jdk 工具包里面都在方法的开始把后面用到的变量都声明了先,后面才初始化。平时我们自己写业务代码也不会单独起一行声明一个变量,也是跟初始化一起。 |
82 zdt3476 May 11, 2022 别的先不说,我真的不理解把 bool 值和 true/false 比较的人到底在想啥 |
83 leexy May 11, 2022 又不是不能运行 |
84 danieladu May 11, 2022 switch(operateName.ToLower()){ case "binding": case "refresh": dosomething(); break; ... } |
85 Ben4 May 11, 2022 你来我办公室一趟 |
86 lujiaosama May 11, 2022 看着难受, 整那么多 ifelse 做什么, 三目运算符, includes 用上三行以内搞定. 用变量名注解含义还是要的, 但是这个变量名中英文混用,驼峰下划线混用, 真的挖槽. 这种代码读起来像是实习生的面条代码, 又臭又长, 逻辑稍微多一点就要被淹没在 ifelse 的汪洋里. |
87 hailiang88 May 11, 2022 这就是自己爽就行,不在乎别人的代码,写起来一点心智负担都没有 |
88 AV1 May 11, 2022 当 value 为 bool 型的时候,if(value == true)这种写法相比 if(value)有什么好处吗? |
89 FringJX May 11, 2022 `when{ "bangDing".equalsIgnoreCase(operateName), "shuaXin".equalsIgnoreCase(operateName)->{ } } ` |
90 FringJX May 11, 2022 `when{` `"bangDing".equalsIgnoreCase(operateName),` `"shuaXin".equalsIgnoreCase(operateName)->{` `}` `}` |
91 DreamSaddle May 11, 2022 可能是按行数计费时期留下来的代码。 |
92 UserNameisNull May 11, 2022 可能是美团的?要统计代码行数? |
93 adoal May 11, 2022 团队有 coding style 就拿出来怼他。没有……说个捷豹。 |
94 lurenw May 11, 2022 这感觉就是一种"流水账"式的写法,先 XXX 然后 XXX ,在分支不多的情况下,这种写法对后来人的维护,我觉得没啥坏处,甚至不要动脑子,比起动不动在一个 if 判断里面加入 N 个 condition 的精简代码,我更喜欢读这种。 只不过最后这个 if (isOperate_BangDing == true|| isOperate_ShuaXin == true) 有点无脑和随意了。然后这个人的命名也很随意。 |
95 wangtian2020 May 11, 2022 我会直接改成中文枚举值 if (OnperationName== '绑定'||OnperationName== '刷新') { } 还在用 var 是什么屑前端,兼容 ie ? |
96 Leviathann May 11, 2022 @DOLLOR 如果是 java 的话,Boolean 可能为 null ,boolean 则不会,有时候懒得区分就直接写明 == true 了 |
97 efaun May 11, 2022 这么写会降低运行效率吗, 如果不会, 就是正常水平 |
99 sutra May 11, 2022 俩拼音,不及格。 |
100 cnrting May 11, 2022 能赚钱的代码就是好代码 |