V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Aliberter
V2EX  ›  程序员

公正评价,这代码什么水平

  •  
  •   Aliberter · May 11, 2022 · 17435 views
    This topic created in 1449 days ago, the information mentioned may be changed or developed.
    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) {...
    
    
    Supplement 1  ·  May 11, 2022
    声明下是 java ,var 的用法只是因为用的是 jdk11 ,支持这样写了,但我不爱用
    151 replies    2022-05-12 10:08:07 +08:00
    1  2  
    nonwill
        101
    nonwill  
       May 11, 2022
    这还好吧,引荐去看几个高手大佬们的 fork 出来的改进项目,加简直是 shi++++山

    https://github.com/goldendict/goldendict/issues/1340#issuecomment-1123296947
    gogogo1203
        102
    gogogo1203  
       May 11, 2022
    1. 有些语言 var xx boolean 默认就是 false, 再指明是 false 就是废话
    2. 除非能 if else 就结算,不然一律使用 switch
    3. 统一处理 input toLowerCase, 然后再 switch, 然后直接处理各个逻辑。

    槽点实在是太多了
    Leviathann
        103
    Leviathann  
       May 11, 2022
    @wangtian2020 这个代码逻辑其实是反的,相当于把最后一个 else 写到了最上面,如果是经常考虑完备性的人读这个代码会感觉很不适
    dufu1991
        104
    dufu1991  
       May 11, 2022
    @Aliberter 可能这就是他能当领导的原因。
    oppoic
        105
    oppoic  
       May 11, 2022
    var a = list.Contains("a") ? true : false;

    过了很久,IDE 智能了许多,提示我这块可以优化,我才发现。
    cslive
        106
    cslive  
       May 11, 2022
    看到 var 和变量名以为是 javascript ,后面再看 equalsIgnoreCase 才知道是 java ,差点没认出来
    ClorisYe
        107
    ClorisYe  
       May 11, 2022
    这么短的代码看不出别的,就知道很容易看清楚它想表达什么意思。我认为容易理解的就是好代码。
    bthulu
        108
    bthulu  
       May 11, 2022
    @zdt3476 bool 跟 true 比较是有用的, 有可能你的这个对象里没有这个 bool 属性, 如果直接 if(a.b)就会出错, 而 if(a.b == true)却能整厂运行
    pkwenda
        109
    pkwenda  
       May 11, 2022
    我还以为是 js 重新了 String 呢

    String.prototype.equalsIgnoreCase = function(str){ return true }
    akira
        110
    akira  
       May 11, 2022
    挺好的啊,一目了然 不用做任何猜测。

    能运行,并且清晰的代码 就是好代码。。。
    pkwenda
        111
    pkwenda  
       May 11, 2022
    @nonwill #101 我没看明白你喷的点是什么,你也没喷代码写的烂啊 ,项目进度慢? 😂
    nonwill
        112
    nonwill  
       May 11, 2022
    @pkwenda “喷”过了,不管用
    https://github.com/goldendict/goldendict/pull/1447
    https://www.v2ex.com/t/842896

    估计几个大佬就是为了练习英语吧
    goobai
        113
    goobai  
       May 11, 2022 via Android
    代码跟人,一个能跑就行!再怎么好看的代码,也就那点工资
    jones2000
        114
    jones2000  
       May 11, 2022
    代码水平主要看是否满洲当前业务需求, 如果不满足,在漂亮的代码都是白给。其次就是可以让其他人可以看懂代码逻辑。看懂这个标准就不好说了,依据其他人的教育程度,文化水平,代码功底,业务了解程度等等.....

    满洲当前业务需求这很重要,如果需求 10 并发量, 你写了 1W 个并发量,在老板看来都一样,业务能上线了。题外话, 如果你真写了 1W 并发的,那你们老板 2 期项目怎么升级收费呢?
    encro
        115
    encro  
       May 11, 2022
    还不错,
    用到了防御性编程和变量命名表意,
    不亏是领导,
    应该看过代码大全之类的。

    差的是对语言不熟悉。
    Kamiyu0087
        116
    Kamiyu0087  
       May 11, 2022
    我觉得能一眼就看明白的代码也不算太差吧😂
    UIXX
        117
    UIXX  
       May 11, 2022
    对于已经语义化了的变量,我有一种评判代码逻辑组织是否合理的方式,即

    用自然语言去试读代码是否会让人感到冗余。

    从这个角度来看,我是同意 LZ 的说法,比如 if isOpened == true (假如 已打开 为真)就不如 if isOpened (假如已打开)。
    SG4YK
        118
    SG4YK  
       May 11, 2022 via iPhone
    😅
    justin2018
        119
    justin2018  
       May 11, 2022
    变量命名 看着好累 一下英文 一下拼音~~

    代码 写得挺好的~

    逻辑一下就看清楚了 知道是干嘛的
    timothyye
        120
    timothyye  
       May 11, 2022
    如果工资是以代码行数来计算的话,这是高人一等的水平
    v2eb
        121
    v2eb  
       May 11, 2022 via Android
    就是感觉啰嗦,哈哈哈
    l00t
        122
    l00t  
       May 11, 2022
    随意了点,啰嗦了点,其他问题不大。至少结构是清晰的。就这么几行也看不出别的,不知道需求的情况下有些没法说好不好。
    gogogo1203
        123
    gogogo1203  
       May 11, 2022   ❤️ 2
    大家聊了那么多都不知道为什么

    operateName =toLowerCase(operateName)

    switch(operateName ) {
    case "bangding":
    ....
    break;
    case "shuaxin":
    ...
    break;
    default:
    ...
    }
    gogogo1203
        124
    gogogo1203  
       May 11, 2022   ❤️ 1
    我搞不明白了,为什么还会有人说 原代码容易读.
    oldmanong
        125
    oldmanong  
       May 11, 2022 via iPhone
    代码写得绕,简单逻辑写复杂,但能保证性能,也故意埋点儿坑。于是乎一有问题都找他,上司看着工作饱和,老板觉得不可替代。你看他 2 ,他看你也 2
    documentzhangx66
        126
    documentzhangx66  
       May 11, 2022   ❤️ 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 ) ....
    leaves615
        127
    leaves615  
       May 11, 2022
    @cnrting 精辟
    FanError
        128
    FanError  
       May 11, 2022
    @anonydmer 可怕,连这种简单的 if 语句都要用这么秀的代码了吗
    RiceNoodle
        129
    RiceNoodle  
       May 11, 2022
    这命名、字符串常量、缩进风格,不及格。
    一个变量,用多个 bool 表述 而不是枚举,不及格。

    至于用三目运算符还是 if else ,都可以,多几行影响不了啥。
    c138Morty
        130
    c138Morty  
       May 11, 2022
    如果是需求不明确,一直在改动,临时来一版需求,然后还通宵加班必须完成,我只能说很好了,业务逻辑清晰,后续需求变动,还能接着调整
    Uplay
        131
    Uplay  
       May 11, 2022
    @documentzhangx66 有些蒙了
    Jakarta
        132
    Jakarta  
       May 11, 2022
    @documentzhangx66 认同。有的语言中变量需要初始化,有的语言 if 判断也需要==true 。唯一就是,变量命名上蛇形命名和驼峰命名混用、英文和拼音混用。
    thyyn
        133
    thyyn  
       May 11, 2022
    整个代码表达的很清晰方便读,也实现了相应的功能,我觉得问题不大。最大问题反而是命名,看着真难受。我自己 C/C++的习惯,变量初始化必须要赋值。其他的,编译器编译时候会优化掉,反正我觉得没啥大毛病
    lululau
        134
    lululau  
       May 11, 2022
    明明一行代码就可以搞定

    if (Stream.of("bangding", "shuaxin").anyMatch(operateName::equalsIgnoreCase)) {

    }
    haah
        135
    haah  
       May 11, 2022
    一千个观众眼中有一千个哈姆雷特
    lcj2class
        136
    lcj2class  
       May 11, 2022
    就问一句,你领导不上这个网站吗?
    waterlaw
        137
    waterlaw  
       May 11, 2022 via Android
    变量中英文,驼峰和下划线大杂烩
    常量魔法数
    boolean == true 可简写
    techstay
        138
    techstay  
       May 11, 2022
    很烂的代码,但是也不算多烂,毕竟比较容易看懂。那种看不懂的代码才是最烂的。
    summersun2021
        139
    summersun2021  
       May 12, 2022
    看不懂,觉得很厉害的样子。
    Weixiao0725
        140
    Weixiao0725  
       May 12, 2022
    楼上吐槽拼音的,这叫“文化自信”
    ryd994
        141
    ryd994  
       May 12, 2022 via Android
    单看这两行其实问题真不大……
    可读性还更好了

    不知道 java 如何,反正在 C 里,这样写是不会影响性能的。编译器全都给你优化掉。
    r6Vm94FFk9u3W6XI
        142
    r6Vm94FFk9u3W6XI  
       May 12, 2022
    我是感觉这么写挺奇葩的,但是吧,也不是什么多大的问题
    当没看见算了
    GBdG6clg2Jy17ua5
        143
    GBdG6clg2Jy17ua5  
       May 12, 2022
    1.能看懂不?
    2.有 bug 不?
    3.写起来浪费时间不?
    都不的话,干就是了!写完来 v2 摸鱼不香吗?
    v2er4241
        144
    v2er4241  
       May 12, 2022
    @gps949 这代码我看着挺舒服的,正如你所说可能是考虑到后续的改动,我也是喜欢这么写。我本来以为 v2 上的 coder 水平都很高的,看了上面那些回复,感觉大多数人水平都很一般。也有可能是因为语言的不同?我也是写 C#的😂
    chanchan
        145
    chanchan  
       May 12, 2022
    我觉得不是问题,能举点真正有问题的例子吗
    ClaudeCode
        146
    ClaudeCode  
       May 12, 2022
    你还在纠结代码写得好不好的时候, 他都是领导了。
    rev1si0n
        147
    rev1si0n  
       May 12, 2022
    我之前的领导写的那个 Python 代码,也是现学现卖写的东西,动不动 temp ,你是真的会疯
    ghostsf
        148
    ghostsf  
       May 12, 2022
    还好吧,就是规范上要稍微注意下。这么写其实也体现出思路,也便于后续维护调整等
    lovedebug
        149
    lovedebug  
       May 12, 2022
    这是没有代码风格自动校验以及没有代码审查的直接后果。
    chenyu0532
        150
    chenyu0532  
       May 12, 2022
    你应该想的是:写出这种代码的为什么都能当你的领导,为什么你不是领导,差在哪。。
    Bingchunmoli
        151
    Bingchunmoli  
       May 12, 2022 via Android
    槽点在于命名拼音(这个还算小问题),下划线驼峰混合,java 通常是驼峰,我没有用过 var 不予评价,
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1014 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 128ms · UTC 18:57 · PVG 02:57 · LAX 11:57 · JFK 14:57
    ♥ Do have faith in what you're doing.