V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
l947
V2EX  ›  问与答

前端代码编写中,总是由于各种逻辑判断写出一堆 if-else。

  •  
  •   l947 · 2021-03-26 16:51:47 +08:00 · 2168 次点击
    这是一个创建于 1340 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端代码编写中,总是由于各种逻辑判断写出一堆 if-else,当然简单的状态判断能不用已经不用了,但是还有有很多复杂逻辑没想到什么好的替换方法。求教各位大佬都是用什么方法来写这些复杂逻辑的呢?

    12 条回复    2021-03-26 20:51:46 +08:00
    ayase252
        1
    ayase252  
       2021-03-26 16:56:26 +08:00
    可以读一下 重构第 2 版 第 10 章 Simplifying Conditional Logic
    whypool
        2
    whypool  
       2021-03-26 17:34:33 +08:00 via Android
    那就嵌套 if
    leoyzh97
        3
    leoyzh97  
       2021-03-26 17:42:19 +08:00
    策略模式?
    xiaochong0302
        4
    xiaochong0302  
       2021-03-26 18:00:19 +08:00
    放宽心,这个业务逻辑复杂造成的,自我安慰一下啦!
    lscho
        5
    lscho  
       2021-03-26 18:13:12 +08:00 via iPhone
    复杂的逻辑拆分成小块逻辑不就行了
    mon6912640
        6
    mon6912640  
       2021-03-26 18:15:15 +08:00
    用 do...while(false)的结构来减少 if-else 的嵌套,用 break 提前结束,这样的话,就能把 if-else 造成视觉上的坑坑洼洼填平了
    walpurgis
        7
    walpurgis  
       2021-03-26 18:16:33 +08:00 via Android
    表驱动,配置化
    ctrlands
        8
    ctrlands  
       2021-03-26 18:16:44 +08:00
    可能不是你的问题,是需求更改的问题,设计模式?
    rbe
        9
    rbe  
       2021-03-26 19:00:52 +08:00
    return early, 如果还不行就考虑把复杂逻辑拆成多个小函数,起有意义的函数名
    Biwood
        10
    Biwood  
       2021-03-26 19:37:22 +08:00
    新手程序员很容易就会这样,都是这么走过来的。
    这时候就涉及到编程最核心的概念:代码的抽象化。怎么把 else 两边重复的代码提取出来,封装成函数。怎么用 Map 或其他语法替代 if-else 。
    编程最重要的一点就是用少量简单的代码替代大量的重复性劳动,你的逻辑判断里面如果出现了很多重复性的东西,那说明还有优化的空间。重复的逻辑判断封装之后就是函数,多个函数被封装后就是组件 /类,多个组件被封装后就成了库,多个库在被封装之后就构成了一个系统。
    agdhole
        11
    agdhole  
       2021-03-26 20:05:19 +08:00 via iPhone
    IoC
    l947
        12
    l947  
    OP
       2021-03-26 20:51:46 +08:00
    感谢各位大佬,受益匪浅~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3195 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:33 · PVG 21:33 · LAX 05:33 · JFK 08:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.