如何保证代码运行的稳定性? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
c466934322
V2EX    程序员

如何保证代码运行的稳定性?

  •  
  •   c466934322
    466934322 2019-02-15 15:41:50 +08:00 5004 次点击
    这是一个创建于 2434 天前的主题,其中的信息可能已经有所发展或是发生改变。
    总是会有一些情况考虑不到,所以出现 error,总是会自责不已,然后修复 bug。每次开发前总是想着要把场景想好,但是每次都是会漏掉一些场景,导致一些错误情况出现。求大佬分享技能
    25 条回复    2019-02-16 17:57:15 +08:00
    hhyvs111
        1
    hhyvs111  
       2019-02-15 15:47:07 +08:00
    写多了就行了
    xcolder
        2
    xcolder  
       2019-02-15 15:48:23 +08:00
    单元测试
    jdgui
        3
    jdgui  
       2019-02-15 15:49:04 +08:00
    调整心态。
    只需要在心里骂,什么傻逼用户这么用软件的。就完事
    emCupid
        4
    emCupid  
       2019-02-15 15:50:11 +08:00   1
    电脑、显示器、键盘、鼠标一切和撸代码有关的设备都贴上符,保平安
    misaka19000
        5
    misaka19000  
       2019-02-15 15:52:35 +08:00 via Android
    靠测试来保证质量
    cnoder
        6
    cnoder  
       2019-02-15 15:53:42 +08:00
    感觉就像一个风中残烛的老人支撑着拐杖往前走,总怕他会在哪跌倒
    richangfan
        7
    richangfan  
       2019-02-15 15:55:59 +08:00
    软件的可用性是由测试保证的,大学里都教过的。
    Kylin30
        8
    Kylin30  
       2019-02-15 16:01:46 +08:00
    配发操作手册,严格演练,责任到人。
    orangeChar
        9
    orangeChar  
       2019-02-15 16:06:49 +08:00
    写监视程序 写监视监视程序的程序 写监视监视监视程序程序的程序
    写备份方案 写备份方案的备份方案 写备份方案的备份方案的备份方案
    想好甩锅方案(指甩锅给测试以及用户以及其他人,不包括开发) 想甩锅方案失败的甩锅方案 ~~~~
    完了就多写代码
    jinhan13789991
        10
    jinhan13789991  
       2019-02-15 16:08:26 +08:00
    要么程序简单的没有 bug,要么复杂的到不到 bug
    unicloud
        11
    unicloud  
       2019-02-15 16:17:48 +08:00
    多写多总结
    c466934322
        12
    c466934322  
    OP
       2019-02-15 16:18:38 +08:00
    @cnoder 同感
    xpresslink
        13
    xpresslink  
       2019-02-15 16:23:16 +08:00
    你保证不了。
    正经软件公司都会有专业的测试部门和人员,要做功能测试和压力测试。
    当你被测试的妹子给怼的不要不要的,不停改 bug 的时候你就提高了。
    tomczhen
        14
    tomczhen  
       2019-02-15 16:23:56 +08:00
    对边界情况要保证测试用例覆盖。
    可能会超出预期的情况,如果项目时间不足,则需要防御性编程,发生问题可以第一时间定位。
    发生过的错误,除了修复,还需要编写对应测试用例。
    saulshao
        15
    saulshao  
       2019-02-15 16:49:14 +08:00
    这个其实就是测试用例,经验指的就是这种事情。
    除非有一天我们可以用程序本身来写程序,否则就要依赖于这种失败->修正的循环过程来提高稳定性
    lk920724
        16
    lk920724  
       2019-02-15 16:56:49 +08:00
    一直试错

    吧?
    KickAssTonight
        17
    KickAssTonight  
       2019-02-15 17:24:20 +08:00
    代码 review
    cxtrinityy
        18
    cxtrinityy  
       2019-02-15 17:27:25 +08:00
    写之前就做好所有 if else 的情况考虑,同时保证代码的扩展性,写出基础版本后自己测试各种情况,不断迭代,最后由测试来做最后的保证
    xiaoidea
        19
    xiaoidea  
       2019-02-15 17:31:59 +08:00
    即使你写了很完备的单元测试,你也没法保证不会出现各种运行时异常,数据 /机器 /网络甚至项目中用到的各种 library/middleware 都会导致难以预料的运行时异常。所以要做好日志+监控+报警,亡羊补牢是有必要的
    zlmdaybreak
        20
    zlmdaybreak  
       2019-02-15 17:35:20 +08:00
    少考虑场景谁都无法避免,全靠经验。开发前通过 review 方案和结束后的 review 代码是可以帮助减少这种现象。
    Sparetire
        21
    Sparetire  
       2019-02-15 19:14:19 +08:00
    普通人靠静态类型的类型检查和单元测试, 巨佬靠形式化验证...
    leekafai
        22
    leekafai  
       2019-02-15 20:19:55 +08:00 via Android
    没做过自然就会没考虑到,多做就行了
    yiyi11
        23
    yiyi11  
       2019-02-15 22:05:46 +08:00 via Android
    考虑不到是经验问题。理论方法来提高程序可靠性有很多。但实际上跟需求,设计,架构,工期有很大的关系,具体业务编码只是占很小作用的一部分。
    fish47
        24
    fish47  
       2019-02-16 14:33:09 +08:00
    我建议加一个限定 -- "在你所见过,或实践过的,并且有所成效的" 。
    vtoee
        25
    vtoee  
       2019-02-16 17:57:15 +08:00
    @xpresslink 谁说测试一定是妹子
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5279 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 07:09 PVG 15:09 LAX 00:09 JFK 03:09
    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