这样写 if/else 的人,内心一定很扭曲吧 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴AI 生成的内容
withrock
V2EX    程序员

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

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

    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
    感觉在看面试题里面的风格纠错题似的
    39Sc06lk7Khhc4qV
        6
    39Sc06lk7Khhc4qV  
       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-7-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     Solana     5320 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 01:35 PVG 09:35 LAX 17:35 JFK 20:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86