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