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) {...
101
nonwill 2022-05-11 16:56:13 +08:00
这还好吧,引荐去看几个高手大佬们的 fork 出来的改进项目,加简直是 shi++++山
https://github.com/goldendict/goldendict/issues/1340#issuecomment-1123296947 |
102
gogogo1203 2022-05-11 16:57:36 +08:00
1. 有些语言 var xx boolean 默认就是 false, 再指明是 false 就是废话
2. 除非能 if else 就结算,不然一律使用 switch 3. 统一处理 input toLowerCase, 然后再 switch, 然后直接处理各个逻辑。 槽点实在是太多了 |
103
Leviathann 2022-05-11 17:15:23 +08:00
@wangtian2020 这个代码逻辑其实是反的,相当于把最后一个 else 写到了最上面,如果是经常考虑完备性的人读这个代码会感觉很不适
|
105
oppoic 2022-05-11 17:24:27 +08:00
var a = list.Contains("a") ? true : false;
过了很久,IDE 智能了许多,提示我这块可以优化,我才发现。 |
106
cslive 2022-05-11 17:28:02 +08:00
看到 var 和变量名以为是 javascript ,后面再看 equalsIgnoreCase 才知道是 java ,差点没认出来
|
107
ClorisYe 2022-05-11 17:33:52 +08:00
这么短的代码看不出别的,就知道很容易看清楚它想表达什么意思。我认为容易理解的就是好代码。
|
108
bthulu 2022-05-11 17:37:02 +08:00
@zdt3476 bool 跟 true 比较是有用的, 有可能你的这个对象里没有这个 bool 属性, 如果直接 if(a.b)就会出错, 而 if(a.b == true)却能整厂运行
|
109
pkwenda 2022-05-11 17:40:59 +08:00
我还以为是 js 重新了 String 呢
String.prototype.equalsIgnoreCase = function(str){ return true } |
110
akira 2022-05-11 17:45:39 +08:00
挺好的啊,一目了然 不用做任何猜测。
能运行,并且清晰的代码 就是好代码。。。 |
112
nonwill 2022-05-11 18:00:18 +08:00
@pkwenda “喷”过了,不管用
https://github.com/goldendict/goldendict/pull/1447 https://www.v2ex.com/t/842896 估计几个大佬就是为了练习英语吧 |
113
goobai 2022-05-11 18:28:28 +08:00 via Android
代码跟人,一个能跑就行!再怎么好看的代码,也就那点工资
|
114
jones2000 2022-05-11 18:40:09 +08:00
代码水平主要看是否满洲当前业务需求, 如果不满足,在漂亮的代码都是白给。其次就是可以让其他人可以看懂代码逻辑。看懂这个标准就不好说了,依据其他人的教育程度,文化水平,代码功底,业务了解程度等等.....
满洲当前业务需求这很重要,如果需求 10 并发量, 你写了 1W 个并发量,在老板看来都一样,业务能上线了。题外话, 如果你真写了 1W 并发的,那你们老板 2 期项目怎么升级收费呢? |
115
encro 2022-05-11 18:40:55 +08:00
还不错,
用到了防御性编程和变量命名表意, 不亏是领导, 应该看过代码大全之类的。 差的是对语言不熟悉。 |
116
Kamiyu0087 2022-05-11 18:43:47 +08:00
我觉得能一眼就看明白的代码也不算太差吧😂
|
117
UIXX 2022-05-11 18:44:51 +08:00
对于已经语义化了的变量,我有一种评判代码逻辑组织是否合理的方式,即
用自然语言去试读代码是否会让人感到冗余。 从这个角度来看,我是同意 LZ 的说法,比如 if isOpened == true (假如 已打开 为真)就不如 if isOpened (假如已打开)。 |
118
SG4YK 2022-05-11 19:00:57 +08:00 via iPhone
😅
|
119
justin2018 2022-05-11 19:15:41 +08:00
变量命名 看着好累 一下英文 一下拼音~~
代码 写得挺好的~ 逻辑一下就看清楚了 知道是干嘛的 |
120
timothyye 2022-05-11 19:19:49 +08:00
如果工资是以代码行数来计算的话,这是高人一等的水平
|
121
v2eb 2022-05-11 19:26:06 +08:00 via Android
就是感觉啰嗦,哈哈哈
|
122
l00t 2022-05-11 19:27:07 +08:00
随意了点,啰嗦了点,其他问题不大。至少结构是清晰的。就这么几行也看不出别的,不知道需求的情况下有些没法说好不好。
|
123
gogogo1203 2022-05-11 19:35:50 +08:00 2
大家聊了那么多都不知道为什么
operateName =toLowerCase(operateName) switch(operateName ) { case "bangding": .... break; case "shuaxin": ... break; default: ... } |
124
gogogo1203 2022-05-11 19:45:44 +08:00 1
我搞不明白了,为什么还会有人说 原代码容易读.
|
125
oldmanong 2022-05-11 19:59:04 +08:00 via iPhone
代码写得绕,简单逻辑写复杂,但能保证性能,也故意埋点儿坑。于是乎一有问题都找他,上司看着工作饱和,老板觉得不可替代。你看他 2 ,他看你也 2
|
126
documentzhangx66 2022-05-11 20:02:20 +08:00 2
1.定义变量,并初始化赋值,是有意义的。你们没写过 C/CPP ,没调试过复杂程序,自然不知道为啥要这么干。
var isOperate_BangDing = false; var isOperate_ShuaXin = false; 2. if else 这里,我不觉得有啥问题,你要改成别的结构也可以,但我觉得 if else 更能体现思路。 if ("bangDing".equalsIgnoreCase(operateName)) { isOperate_BangDing = true; } else if ("shuaXin".equalsIgnoreCase(operateName)) { isOperate_ShuaXin = true; } 3.这里就不得不说了,不能这样子做,一条 if 语句,应该尽量少的包含操作,这样才利于 debug 。 if (isOperate_BangDing == true || isOperate_ShuaXin == true) {... 我建议这里加一条临时变量,并且为了可读性,把括号也加上: var tempResult = ( (isOperate_BangDing == true) || (isOperate_ShuaXin == true) ); if( tempResult ) .... |
129
RiceNoodle 2022-05-11 20:37:22 +08:00
这命名、字符串常量、缩进风格,不及格。
一个变量,用多个 bool 表述 而不是枚举,不及格。 至于用三目运算符还是 if else ,都可以,多几行影响不了啥。 |
130
c138Morty 2022-05-11 20:48:34 +08:00
如果是需求不明确,一直在改动,临时来一版需求,然后还通宵加班必须完成,我只能说很好了,业务逻辑清晰,后续需求变动,还能接着调整
|
131
Uplay 2022-05-11 20:50:35 +08:00
@documentzhangx66 有些蒙了
|
132
Jakarta 2022-05-11 21:07:34 +08:00
@documentzhangx66 认同。有的语言中变量需要初始化,有的语言 if 判断也需要==true 。唯一就是,变量命名上蛇形命名和驼峰命名混用、英文和拼音混用。
|
133
yehoshua 2022-05-11 22:28:57 +08:00
整个代码表达的很清晰方便读,也实现了相应的功能,我觉得问题不大。最大问题反而是命名,看着真难受。我自己 C/C++的习惯,变量初始化必须要赋值。其他的,编译器编译时候会优化掉,反正我觉得没啥大毛病
|
134
lululau 2022-05-11 22:36:30 +08:00
明明一行代码就可以搞定
if (Stream.of("bangding", "shuaxin").anyMatch(operateName::equalsIgnoreCase)) { } |
135
haah 2022-05-11 22:39:12 +08:00
一千个观众眼中有一千个哈姆雷特
|
136
lcj2class 2022-05-11 22:41:29 +08:00
就问一句,你领导不上这个网站吗?
|
137
waterlaw 2022-05-11 23:23:46 +08:00 via Android
变量中英文,驼峰和下划线大杂烩
常量魔法数 boolean == true 可简写 |
138
techstay 2022-05-11 23:23:47 +08:00
很烂的代码,但是也不算多烂,毕竟比较容易看懂。那种看不懂的代码才是最烂的。
|
139
summersun2021 2022-05-12 00:25:21 +08:00
看不懂,觉得很厉害的样子。
|
140
Weixiao0725 2022-05-12 00:58:32 +08:00
楼上吐槽拼音的,这叫“文化自信”
|
141
ryd994 2022-05-12 02:31:09 +08:00 via Android
单看这两行其实问题真不大……
可读性还更好了 不知道 java 如何,反正在 C 里,这样写是不会影响性能的。编译器全都给你优化掉。 |
142
nanjoyoshino 2022-05-12 08:16:54 +08:00
我是感觉这么写挺奇葩的,但是吧,也不是什么多大的问题
当没看见算了 |
143
angryfish 2022-05-12 08:41:50 +08:00
1.能看懂不?
2.有 bug 不? 3.写起来浪费时间不? 都不的话,干就是了!写完来 v2 摸鱼不香吗? |
144
klo424 2022-05-12 08:49:40 +08:00
@gps949 这代码我看着挺舒服的,正如你所说可能是考虑到后续的改动,我也是喜欢这么写。我本来以为 v2 上的 coder 水平都很高的,看了上面那些回复,感觉大多数人水平都很一般。也有可能是因为语言的不同?我也是写 C#的😂
|
145
chanchan 2022-05-12 09:01:12 +08:00
我觉得不是问题,能举点真正有问题的例子吗
|
146
yaocai321 2022-05-12 09:17:58 +08:00
你还在纠结代码写得好不好的时候, 他都是领导了。
|
147
rev1si0n 2022-05-12 09:37:23 +08:00
我之前的领导写的那个 Python 代码,也是现学现卖写的东西,动不动 temp ,你是真的会疯
|
148
ghostsf 2022-05-12 09:53:11 +08:00
还好吧,就是规范上要稍微注意下。这么写其实也体现出思路,也便于后续维护调整等
|
149
lovedebug 2022-05-12 09:58:24 +08:00
这是没有代码风格自动校验以及没有代码审查的直接后果。
|
150
chenyu0532 2022-05-12 10:07:58 +08:00
你应该想的是:写出这种代码的为什么都能当你的领导,为什么你不是领导,差在哪。。
|
151
Bingchunmoli 2022-05-12 10:08:07 +08:00 via Android
槽点在于命名拼音(这个还算小问题),下划线驼峰混合,java 通常是驼峰,我没有用过 var 不予评价,
|