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

关于条件判断的一点吐槽

  •  
  •   HarrisonLee · 2022-05-23 11:53:29 +08:00 · 1512 次点击
    这是一个创建于 950 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为什么有很多下面这种条件判断写法,甚至包括一些开源项目:

    if(!condition) {
    
    } else {
    
    }
    

    如果是单个 if 还能理解,既然这里有 else ,为什么 if 后面还要对条件求反,让读者多转一个弯!

    anonydmer
        1
    anonydmer  
       2022-05-23 11:59:27 +08:00
    这也要归到 java 节点下?
    daimubai
        2
    daimubai  
       2022-05-23 12:02:24 +08:00
    有可能 else 是后加的吧
    buxudashi
        3
    buxudashi  
       2022-05-23 12:05:28 +08:00
    可能是因为 condition 是多个吧。转一下变成一个。
    比如,false,0,null,undefined 等等, 这一类的都统一转一下。这是智慧。你不要吐。
    libook
        4
    libook  
       2022-05-23 12:14:10 +08:00
    @anonydmer #1 哈哈哈,看到这个回复绷不住地笑了……

    @HarrisonLee 有时候业务上的关注是有侧重点的,而一些人希望先看到最关注的东西;比如业务上关注的条件在代码里只能使用“!condition”这种方式来表达,如果强行掰成“condition”并交换 if 和 else 块,计算机倒是无所谓,但是人顺着业务需求来看代码就也需要在大脑里进行一下转换。我个人倾向于业务需求文档咋写,代码就怎么写,让读代码尽可能少些逻辑转换,提高效率、降低 bug 概率。
    当然,也不是说这种是唯一用来提高可读性的方式,也可以用注释,或者单独声明一个反义变量,这个就是看个人或团队的代码风格了。
    最后只能说这种写法不是禁忌,也不一定任何时候都没有好处,具体还是看情景,看是不是确实没必要。
    AoEiuV020CN
        5
    AoEiuV020CN  
       2022-05-23 12:36:22 +08:00   ❤️ 1
    搜了下我公司项目也大量这种写法,最常见的是,
    if (!TextUtils.isEmpty(xxx)) {
    yyy
    } else {
    zzz
    }
    重点在非空,而不是空,所以就 if 非空,
    IvanLi127
        6
    IvanLi127  
       2022-05-23 13:02:19 +08:00 via Android
    这个甚至和花括号里的行数有关系,我就比较喜欢特别短的分支写在前面,长的放后面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2480 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:45 · PVG 23:45 · LAX 07:45 · JFK 10:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.