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

Web 项目越来越多的 if else 这正常吗?

  •  
  •   blackboom ·
    blackstorm · 2015-09-17 15:37:49 +08:00 · 4839 次点击
    这是一个创建于 3357 天前的主题,其中的信息可能已经有所发展或是发生改变。

    思维是被固化了?
    感觉到非常多的 if 结构语句
    有时候会纠结用 try 还是 if else ?

    24 条回复    2015-09-18 17:42:46 +08:00
    moe3000
        1
    moe3000  
       2015-09-17 15:46:40 +08:00   ❤️ 1
    我基本会有很多 if return, else 较少
    话说 try 是要怎么用?为什么会和 if else 纠结?
    lichao
        2
    lichao  
       2015-09-17 15:52:04 +08:00   ❤️ 1
    if 多不多,得看具体业务场景
    try 做异常捕获,跟 if else 这个完全不需要纠结吧
    cyberdak
        3
    cyberdak  
       2015-09-17 15:52:56 +08:00   ❤️ 1
    try 是捕抓异常的。。

    楼楼大概是要问 if else 和 switch
    FFLY
        4
    FFLY  
       2015-09-17 15:55:10 +08:00   ❤️ 1
    try 是做异常捕获处理的,纠结什么呢?
    zjq426
        5
    zjq426  
       2015-09-17 15:55:33 +08:00   ❤️ 1
    得看 if 多在哪了,如果是比较值的可以用 switch 啊,
    如果是一组逻辑判断也可以实现类似 python 里的 any all 之类的判断。或者优化一下表达式什么的。
    其实做好代码的封装和模块化处理应该也不太会出现很多的 if 。
    如果是 copy & paste 的代码那出现很多 if 是必然的了。。。
    xfspace
        6
    xfspace  
       2015-09-17 15:55:35 +08:00 via iPad   ❤️ 1
    switch 来得快, else if 读起来缩进难受
    pelloz
        7
    pelloz  
       2015-09-17 16:09:11 +08:00   ❤️ 1
    常用的判断封装好,把类似业务的条件判断抽离出来一起处理,这样看起来逻辑比较清晰,该需求也容易应对了
    honam
        8
    honam  
       2015-09-17 18:58:13 +08:00   ❤️ 1
    try 和 if else 有关系? LZ 怎么做的
    aisk
        9
    aisk  
       2015-09-17 19:02:51 +08:00   ❤️ 1
    说明面向对象建模没有做好,写出来的代码都是过程式的。
    sorra
        10
    sorra  
       2015-09-17 19:46:24 +08:00   ❤️ 1
    异常控制流多的走 try 不是不可以, 1 楼的 if return 也可以。清晰就好,看效果。
    另外安利一篇 http://segmentfault.com/a/1190000000664023
    blackboom
        11
    blackboom  
    OP
       2015-09-17 20:20:26 +08:00
    @moe3000 @lichao @cyberdak @FFLY ...例如判断非法 URL (/?p=xxx )之类,纠结用 if 还是 try ,纠结那个更合适当前场景,更加简洁迅速(这可能是病)。
    @pelloz @aisk 判断最多的是在 controller 中,框架使用的是 jfinal
    例如某个 Controller 需要判断非法 URL ,需要判断当前登录用户 ID ,同时也要满足未登录用户需求,这样下来整个个代码看起来满目全非。
    类似这种大量的判断无从下手的感觉。

    另外求推荐比较精细的项目
    aisk
        12
    aisk  
       2015-09-17 20:42:12 +08:00   ❤️ 1
    @blackboom 就是 jfinal 帮你做了基本的面向对象建模,之后的你没有再考虑继续抽象,而是在此之上写很多 if else while return 的语句。这种项目挺常见的,关键就是要做合理的抽象。
    moe3000
        13
    moe3000  
       2015-09-17 20:49:38 +08:00   ❤️ 1
    @blackboom 记得 jfinal 有 interceptor ,用这个拦截非法 url 啊
    akagi
        14
    akagi  
       2015-09-17 20:54:29 +08:00   ❤️ 1
    再次建议表驱动……
    BB9z
        15
    BB9z  
       2015-09-17 22:45:46 +08:00
    把 model 变重一些,多建一些可读性更好的 getter 。
    phithon
        16
    phithon  
       2015-09-17 23:26:57 +08:00   ❤️ 1
    其实楼主的意思是, web 里太多错误判断用 if else 来完成了,是不是要改成异常处理
    其实我的意见是,没必要。
    else 能少就少, if 的话该有的就得有,不满足条件的直接 return 不用 else ,然后把通用的一些功能一封装就好了,不嫌多的。谨慎是好事。
    blackboom
        17
    blackboom  
    OP
       2015-09-18 00:20:13 +08:00 via Android
    @moe3000
    @phithon
    谢谢两位,改为 if return 代码清爽太多了,简洁迅速。喜欢!
    blackboom
        18
    blackboom  
    OP
       2015-09-18 00:23:23 +08:00 via Android
    @akagi 感谢,又发现新大陆了
    zonghua
        19
    zonghua  
       2015-09-18 00:30:54 +08:00
    设计模式,设计模式。
    whimsySun
        20
    whimsySun  
       2015-09-18 00:34:07 +08:00
    我都看纠结了。。。
    lincanbin
        21
    lincanbin  
       2015-09-18 00:58:16 +08:00 via Android
    需要判断的地方就用 if 啊,当然要注意一些地方的判断可以合并或者优化。
    try 是异常处理的。
    zacard
        22
    zacard  
       2015-09-18 08:53:10 +08:00
    设计模式。
    WalkingEraser
        23
    WalkingEraser  
       2015-09-18 10:20:09 +08:00
    根据我见过的一 PHP 完整企业项目和 Java 企业项目代码,都是一堆 if return...
    flyingghost
        24
    flyingghost  
       2015-09-18 17:42:46 +08:00
    条件或者变量太多,本身设计就有问题。

    当年发生过这么一件事:
    有个兄弟写游戏逻辑, if else 套了几百层,单方法 5k 行代码,把摩托手机的 kvm 给搞挂了。
    后来叫他改成表驱动, 50 行代码解决问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1056 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:23 · PVG 03:23 · LAX 11:23 · JFK 14:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.