V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
RRL
0.88D
V2EX  ›  Java

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

  •  
  •   RRL ·
    blackstorm · Sep 17, 2015 · 5425 views
    This topic created in 3876 days ago, the information mentioned may be changed or developed.

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

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

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

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

    当年发生过这么一件事:
    有个兄弟写游戏逻辑, if else 套了几百层,单方法 5k 行代码,把摩托手机的 kvm 给搞挂了。
    后来叫他改成表驱动, 50 行代码解决问题。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1155 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 103ms · UTC 18:05 · PVG 02:05 · LAX 11:05 · JFK 14:05
    ♥ Do have faith in what you're doing.