V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
withrock
V2EX  ›  程序员

这样写 if/else 的人,内心一定很扭曲吧

  •  
  •   withrock · 2017-07-10 18:46:57 +08:00 · 12135 次点击
    这是一个创建于 2475 天前的主题,其中的信息可能已经有所发展或是发生改变。

    110 条回复    2017-07-11 17:02:58 +08:00
    1  2  
    Jayce245
        1
    Jayce245  
       2017-07-10 19:08:04 +08:00
    哈哈哈
    bidongliang
        2
    bidongliang  
       2017-07-10 19:12:44 +08:00   ❤️ 2
    不光 if/else,整个代码都光芒四射吧!
    leejanfin
        3
    leejanfin  
       2017-07-10 19:13:01 +08:00 via iPhone
    喜感...
    另外等号两边没有空格 差评...
    wangdu2012
        4
    wangdu2012  
       2017-07-10 19:13:39 +08:00 via iPhone
    这个怎么修改好?
    RiceNoodle
        5
    RiceNoodle  
       2017-07-10 19:14:44 +08:00
    感觉在看面试题里面的风格纠错题似的
    wmc
        6
    wmc  
       2017-07-10 19:15:24 +08:00 via Android   ❤️ 2
    我怎么觉得把 else 后面的{收到同一行更美观。。。
    domty
        7
    domty  
       2017-07-10 19:15:47 +08:00
    这不就是一行三目运算符的事吗?😮
    shihira
        8
    shihira  
       2017-07-10 19:18:23 +08:00 via Android
    除了风格上有点松垮之外,还好啊觉得,没有太多重的 if/else,逻辑也算清晰
    minami
        9
    minami  
       2017-07-10 19:19:11 +08:00   ❤️ 3
    ×代码格式化工具
    √上 V2 发帖
    herozzm
        10
    herozzm  
       2017-07-10 19:25:57 +08:00
    0915240
        11
    0915240  
       2017-07-10 19:26:32 +08:00 via iPhone
    估计才写代码没多久吧
    herozzm
        12
    herozzm  
       2017-07-10 19:27:45 +08:00   ❤️ 6
    caniuse
        13
    caniuse  
       2017-07-10 19:28:39 +08:00
    你这字体也不像是写代码的人
    redtea
        14
    redtea  
       2017-07-10 19:33:09 +08:00
    var payMethod = $("#selPayMethod").val();
    if(gPayMethod == "99"){
    payMethod = "99";
    }else if(payMethod == undefined || payMethod == ""){
    payMethod = "00";
    }
    myPacket.data.add("payMethod", payMethod);
    qdwang
        15
    qdwang  
       2017-07-10 19:33:54 +08:00
    这可能是某种需求变动导致的,应对后续的需求变动增减代码也会比较方便
    explon
        16
    explon  
       2017-07-10 19:34:07 +08:00 via iPhone
    傻逼赶紧开除
    explon
        17
    explon  
       2017-07-10 19:38:54 +08:00 via iPhone
    @redtea 恶心代码
    hjc4869
        18
    hjc4869  
       2017-07-10 19:42:21 +08:00
    楼主给的这个​ if ​/​ else ​的代码格式倒是挺扭曲的……
    zhoufenfens
        19
    zhoufenfens  
       2017-07-10 19:57:29 +08:00
    我还见过这样的
    if (xxx) doSth()
    else
    {
    doSthElse()
    }

    想骂人..
    rubyvector
        20
    rubyvector  
       2017-07-10 20:27:12 +08:00
    格式怪了点。逻辑没问题吧
    SourceMan
        21
    SourceMan  
       2017-07-10 20:32:14 +08:00 via iPhone
    上 eslint 不就没有吐槽的机会了吗?只能说你们本身开发不规范
    cxbig
        22
    cxbig  
       2017-07-10 20:50:39 +08:00
    新手的话难免,尝试沟通,介绍 IDE 或 Lint 等自动排版工具。拒不接受的再来吐槽也不迟。
    代码是啰嗦了一点,但是思路 比较清晰。

    - 中文注释这个不喜欢
    - 表单取值要加这么多判断说明设计就有问题,尝试在源头就处理好,比方说:
    -- 变量 gPayMethod 直接输入到#selPayMethod
    -- #selPayMethod 不给空值,默认为“ 00 ”
    ecloud
        23
    ecloud  
       2017-07-10 20:59:01 +08:00
    这哥们儿是双子座的吧,人格比较分裂……
    timothyye
        24
    timothyye  
       2017-07-10 21:04:22 +08:00 via Android   ❤️ 1
    这种写法是异端,得烧屎,哈哈
    solobat
        25
    solobat  
       2017-07-10 21:23:21 +08:00
    if else 的放置确实有点儿另类,倒是可以再优化下
    acrisliu
        26
    acrisliu  
       2017-07-10 21:29:56 +08:00
    am241
        27
    am241  
       2017-07-10 22:07:42 +08:00   ❤️ 4
    见过的最奇葩的代码,这也是我为什么总想着逃离嵌入式圈的原因

    ![]( )
    liyuhang
        28
    liyuhang  
       2017-07-10 22:08:18 +08:00   ❤️ 2
    ![image]( https://ooo.0o0.ooo/2017/07/10/59638a3ba2e4a.png)
    liyuhang
        29
    liyuhang  
       2017-07-10 22:09:54 +08:00
    回复怎么使用 Markdown 语法?
    breestealth
        30
    breestealth  
       2017-07-10 22:10:26 +08:00   ❤️ 11
    看别人代码并且像 LZ 这么评价的人,内心一定很扭曲吧

    看代码就看代码,凭什么说人家内心扭曲,LZ 你自己才是内心扭曲的那个吧。
    greatghoul
        31
    greatghoul  
       2017-07-10 22:13:32 +08:00
    花式秀代码。
    tnx2014
        32
    tnx2014  
       2017-07-10 22:27:45 +08:00
    @am241 这个例子棒,我感觉写出你这例子的人才是真的不动脑,写楼主的例子的人可能只是没有想到简单写法而已。
    mingyun
        33
    mingyun  
       2017-07-10 22:47:27 +08:00
    代码格式化下先
    dream7758522
        34
    dream7758522  
       2017-07-10 22:53:27 +08:00 via Android
    我觉得格式别扭了一些,
    代码挺好的。
    mahone3297
        35
    mahone3297  
       2017-07-10 22:54:20 +08:00
    lz,那你说应该怎么写?
    大家都吐槽,那应该怎么写?
    大家在吐槽 else 的位置?还好吧。。。
    ghos
        36
    ghos  
       2017-07-10 22:54:25 +08:00
    @am241 这段代码真的是。。。。叹为观止
    NicholasWangC
        37
    NicholasWangC  
       2017-07-10 23:02:28 +08:00
    @am241 ta 是不是用 excel 写的代码。。。呸,拖的代码?
    ecloud
        38
    ecloud  
       2017-07-10 23:10:55 +08:00
    @am241 这是印度人写的代码吗?以前不是流传一个段子,说印度人直接是开个大数组就干,从来不会用数据结构
    iVeego
        39
    iVeego  
       2017-07-10 23:20:09 +08:00
    @liyuhang #29 回复暂不支持 MD
    BoBoy
        40
    BoBoy  
       2017-07-10 23:50:55 +08:00 via iPhone
    又见回帖的好多装逼侠。。。。
    honeycomb
        41
    honeycomb  
       2017-07-11 00:08:37 +08:00
    @liyuhang
    不考虑格式(缩进等),原先的代码在逻辑上没什么不合适,难道这里希望把它改用逆否命题式的 guard 条件来写?
    pysama
        42
    pysama  
       2017-07-11 00:57:05 +08:00
    @caniuse 这字体还行把。 我见过 坚决不用等宽字体写代码的。 而且只要是带 tab 的工具,肯定是齐刷刷二十几个 tab 全开着,找文件的时候一个个 tab 来回切着找。
    我是佩服的不行。。
    bk201
        43
    bk201  
       2017-07-11 07:02:52 +08:00 via iPhone
    no bb,show me your code.除了啰嗦,也没觉得有多奇怪,引申到别人心里扭曲是什么鬼?
    wotemelon
        44
    wotemelon  
       2017-07-11 08:33:23 +08:00
    @redtea 你这代码写的。。。无力吐槽
    wangxiaoer
        45
    wangxiaoer  
       2017-07-11 08:37:31 +08:00
    我觉得楼主贴的代码逻辑没啥大问题,就是有些重复了,总比 x 马培训那个手动递归的强吧。

    这样会不会好点

    mrcn
        46
    mrcn  
       2017-07-11 08:38:06 +08:00 via Android
    不是很懂到底哪里不对
    除了里面的 if 可以跟着 else 直接写以外
    hzw94
        47
    hzw94  
       2017-07-11 08:41:23 +08:00
    肯定是新手,基本不注意格式规范,应该从未考虑当别人阅读的情况
    lrh3321
        48
    lrh3321  
       2017-07-11 08:41:39 +08:00
    需要格式化下代码
    auhah
        49
    auhah  
       2017-07-11 08:58:04 +08:00
    写完肯定没自己看过。。。。
    xujialiang
        50
    xujialiang  
       2017-07-11 08:59:29 +08:00
    一起优化代码,面试题
    jianghu52
        51
    jianghu52  
       2017-07-11 09:03:47 +08:00
    如果工期只有半天。我指不定也会写出这样的代码。。。。
    wizardforcel
        52
    wizardforcel  
       2017-07-11 09:04:38 +08:00 via Android
    就不知道拿个变量缓存一下。
    doubleflower
        53
    doubleflower  
       2017-07-11 09:07:16 +08:00
    写代码对格式没有强迫症的都可以开除了
    syyy
        54
    syyy  
       2017-07-11 09:09:15 +08:00
    我曾经因为 else 两边打空格被吐槽,后来当着那人的面格式化代码,完胜。
    zjsxwc
        55
    zjsxwc  
       2017-07-11 09:14:39 +08:00
    感觉是 else 里的是 原来正常的代码, 后来产品经理要求马上加个组合支付( gPayMethod==99 )功能,就写成楼主这种代码了
    suckli
        56
    suckli  
       2017-07-11 09:15:47 +08:00
    这种魔鬼数字看着就很恐怖。。。
    MiguelValentine
        57
    MiguelValentine  
       2017-07-11 09:15:54 +08:00   ❤️ 1
    看了一些回答。。我才发现 v2 的水平也就这样。就看到一个提三目的,好几个说没什么大问题。。??可以。难怪你们的代码量 5x。是 kpi 指标吗。
    Arainc
        58
    Arainc  
       2017-07-11 09:17:54 +08:00
    @am241 同想脱嵌入式圈。。。无数个全局变量
    jydeng
        59
    jydeng  
       2017-07-11 09:19:09 +08:00
    shift + alt + f
    walleL
        60
    walleL  
       2017-07-11 09:28:11 +08:00
    有没有大佬指出都有哪些问题?我学习一下
    chenyu0532
        61
    chenyu0532  
       2017-07-11 09:32:17 +08:00
    说代码逻辑写的不好就说逻辑的事,跟个 if else 格式叫什么劲
    deadEgg
        62
    deadEgg  
       2017-07-11 09:33:44 +08:00
    if else 的写法精简度 是判断大学生代码清洁的基本门槛之一 :doge
    heaton_nobu
        63
    heaton_nobu  
       2017-07-11 09:39:59 +08:00
    感觉楼主内心也挺扭曲的
    whisperer
        64
    whisperer  
       2017-07-11 09:48:24 +08:00
    说 if else 的各位,我想请教一下我这个怎么解释,原代码如下:



    执行代码格式化,PhpStorm 把格式改成楼主同事的风格了:

    yalanaika
        65
    yalanaika  
       2017-07-11 09:48:43 +08:00
    @am241 各位别吐槽啊,人家把 o(n)的代码优化成 o(1)的了
    lianxiaoyi
        66
    lianxiaoyi  
       2017-07-11 09:53:29 +08:00   ❤️ 1
    为什么要给一个有强迫症的程序员看这个。。。。。。妈的。。。。。。心扭一起了。。。。。我先去捏包方便面缓解一下。。。。。。。。。。。。
    Curtion
        67
    Curtion  
       2017-07-11 10:06:49 +08:00
    实话告诉你,我们老师都是这么写的,不过是搞嵌入式的
    aitaii
        68
    aitaii  
       2017-07-11 10:07:06 +08:00
    @lianxiaoyi 你的强迫症不能强迫你把。。。写整齐点吗,。。。。,,。。,。》。,。,。,。,。,。,。,。,
    demo
        69
    demo  
       2017-07-11 10:07:48 +08:00
    @whisperer 一个意思,只是把 else if 拆掉了,换成 else 后再 if else
    liyuhang
        70
    liyuhang  
       2017-07-11 10:08:19 +08:00
    @whisperer 是不是 IDE 配置被改了
    liu35118665
        71
    liu35118665  
       2017-07-11 10:09:01 +08:00
    var payMethod=gPayMethod;
    if(payMethod !="99"){
    payMethod=$("#selPayMethod").val()||"00";
    }
    myPacket.data.add("payMethod",payMethod);
    fds
        72
    fds  
       2017-07-11 10:11:57 +08:00
    强制开启自动格式化
    lianxiaoyi
        73
    lianxiaoyi  
       2017-07-11 10:12:00 +08:00
    @aitaii 这个到不是强迫症。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    lianxiaoyi
        74
    lianxiaoyi  
       2017-07-11 10:13:21 +08:00
    @aitaii 我草。。。。。。为毛后面少了一个。 我靠 。。。。。。
    whisperer
        75
    whisperer  
       2017-07-11 10:19:07 +08:00
    @demo #69
    但是楼上不是很多人吐槽这个格式么,我也很不喜欢这个格式

    @liyuhang #70
    刚才又测试了一下,我用的是在 Default 上 Set from PSR1/PSR2,切换成编辑器自带的 Default 就没有这个问题了,感谢提醒
    slion
        76
    slion  
       2017-07-11 10:25:30 +08:00
    先把代码格式化一次
    lance26
        77
    lance26  
       2017-07-11 10:32:20 +08:00
    @am241 这是宏展开自动生成的吧,肯定不是手写的,没觉得有什么问题
    NSAtools
        78
    NSAtools  
       2017-07-11 10:36:34 +08:00   ❤️ 1
    @am241 这是按行计费的吧
    maplerecall
        79
    maplerecall  
       2017-07-11 10:39:15 +08:00
    简直难受,究竟是经历了什么才会写出这样的括号
    sonyxperia
        80
    sonyxperia  
       2017-07-11 10:51:32 +08:00
    我觉得楼主的内心扭曲多了
    zhengxiaowai
        81
    zhengxiaowai  
       2017-07-11 10:53:57 +08:00
    换行党和不换行党看着都很无奈
    bk201
        82
    bk201  
       2017-07-11 10:56:02 +08:00
    @MiguelValentine 算了吧,这里几个不懂三目,别乱喷,如果你厉害你写个代码给大家瞧瞧就是了。
    dapeng
        83
    dapeng  
       2017-07-11 10:58:59 +08:00
    @herozzm ,不扶老奶奶,服你
    XiaoFaye
        84
    XiaoFaye  
       2017-07-11 10:59:43 +08:00
    大家别 BB 了,估计写这代码的人 5 万一个月呢,尔等屌丝哪有资格评论。
    am241
        85
    am241  
       2017-07-11 10:59:44 +08:00 via Android
    @lance26 没那么多玄机,他们就是蠢。看看网上流传的诸多 51 单片机程序源码就知道了
    QAPTEAWH
        86
    QAPTEAWH  
       2017-07-11 11:00:22 +08:00
    格式有点问题,内容不评价。

    有些人不要少见多怪
    - “ logic follow structure ” 根据这个原则写出多重嵌套 if-else 很正常,反倒是各种合并会让逻辑不清晰
    - 状态机写个大 switch 太正常了,搞不好是代码生成的
    blacklee
        87
    blacklee  
       2017-07-11 11:12:40 +08:00
    好像还没人说这一点,题中的代码上是
    ```if (cond1) {
    xx1();
    } else {
    if (cond2) xx2();
    else xx3();
    }```

    这就是 `if - else if` 的经典套路了,应该改成

    ```if (cond1) {
    xx1();
    } else if (cond2) {
    xx2();
    } else {
    xx3();
    }```

    不知道 md 语法行不行
    Sapp
        88
    Sapp  
       2017-07-11 11:38:28 +08:00
    @MiguelValentine 有些人就是不喜欢用三元运算符,这不是喷点,喷点是他这么写确实很难看,就算用 if 也不该用这么难看,不知道你的关注点为什么在可以用三元运算符上。
    Sapp
        89
    Sapp  
       2017-07-11 11:44:17 +08:00
    @blacklee
    if (xxx === '99') {
    xxxx(x, 99)
    } else {
    xxxx(x, val || 0)
    }

    这么写就可以了
    yanghao633785
        90
    yanghao633785  
       2017-07-11 11:46:56 +08:00
    var payMethod = $("#selPayMethod").val();
    if(payMethod == undefined || payMethod == ""){
    payMethod = "00";
    }
    myPacket.data.add("payMethod", payMethod);
    //"99"为啥要单独拿出来额
    yuchenyang1994
        91
    yuchenyang1994  
       2017-07-11 11:52:41 +08:00

    不想吐槽。。。。
    laoyur
        92
    laoyur  
       2017-07-11 11:54:49 +08:00
    能用即合理,能赚钱就行,吹毛求疵干吗
    说非要优化成 if - else if 结构的,不知道业务是随时会变的吗,楼主这种风格的代码应对随时会加上的各种龟毛逻辑,更从容,不容易出 bug
    Sapp
        93
    Sapp  
       2017-07-11 11:55:12 +08:00
    @yanghao633785
    你这么写似乎是有 bug,第一个 if 里是 gPayMethod,gPayMethod 应该是单独获取的。 而且也没必要这么写。

    const payMethod = gPayMethod === '99' ? '99' : $("#selPayMethod").val() || '0'

    xxxx('payMethod', payMethod)
    mineqiqi
        94
    mineqiqi  
       2017-07-11 12:02:07 +08:00
    var payMethod = gPayMethod=="99"?gPayMethod:$(#selPayMethod).val||"00";
    myPacket.data.add("payMethod",payMethod);
    yanghao633785
        95
    yanghao633785  
       2017-07-11 12:05:36 +08:00
    @Sapp 确实,受教了。
    Jimrussell
        96
    Jimrussell  
       2017-07-11 12:14:35 +08:00
    顶楼那个确实有待提高,但也就是别人可能菜了点新手了点。说他内心扭曲我实在看不出来。
    ZzFoo
        97
    ZzFoo  
       2017-07-11 12:22:06 +08:00
    楼主的槽点居然在 if else, 不应该是 "99" 和 "00" 那两个 magic number 以及写了三次的 myPacket.data.add() 吗
    stzz
        98
    stzz  
       2017-07-11 12:25:14 +08:00 via Android
    其他就算了,主要是括号看得人难受吧,看得头疼
    murmur
        99
    murmur  
       2017-07-11 12:34:37 +08:00
    @caniuse 宋体字方方正正招你惹你了了
    第一次看到用字体喷人的
    liangWL
        100
    liangWL  
       2017-07-11 12:36:39 +08:00
    Ctrl+Shift+Alt+T 搞定
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1085 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 23:21 · PVG 07:21 · LAX 16:21 · JFK 19:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.