怎么看待在开发过程中就进行优化的问题? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Freeego
V2EX    程序员

怎么看待在开发过程中就进行优化的问题?

  •  
  •   Freeego 2019-12-18 12:45:20 +08:00 3940 次点击
    这是一个创建于 2131 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不知道是完美主义还是什么,我自己在开发的时候总是习惯同步地进行优化,而且是那种我自己都觉得没什么必要的优化。

    比如经常苦思冥想降低几个百分点的 CPU 占用率,想尽办法降低内存消耗,写一个组件的时候一开始就尽量写得可扩展可重用。关键是这些地方优化了也基本看不出什么明显的效果,反而本来一件简单的事会被我自己搞得很复杂,但是不这么做我心里又难受,感觉浑身不舒服。

    各位平时会时时考虑优化么,还是说不碰到性能问题就不优化?感觉都有点强迫症了,难受的不行……

    30 条回复    2019-12-19 09:37:07 +08:00
    ericls
        1
    ericls  
       2019-12-18 12:48:04 +08:00 via iPhone
    最大的毛病之一

    一定要克服
    waterlaw
        2
    waterlaw  
       2019-12-18 12:48:24 +08:00 via Android
    这是对的, 前期不优化后期都懒得优化,把控代码质量是个好的习惯,但也不要过度设计就是了。
    xuanbg
        3
    xuanbg  
       2019-12-18 12:51:45 +08:00
    这个正常,优秀的程序员都是这样一步步成长起来的。什么都应付应付能用就行,就不会有任何的成长。
    darksword21
        4
    darksword21  
    PRO
       2019-12-18 12:54:47 +08:00 via iPhone
    但是有时候时间紧就只能先做完再说了
    dswyzx
        5
    dswyzx  
       2019-12-18 12:55:16 +08:00
    只要按时交活,没有 bug.越优化岂不是越好
    反之,优化了一句,还有 10 句没实现,或者 bug 没修复.那肯定凉凉
    xhq
        6
    xhq  
       2019-12-18 12:55:45 +08:00 via Android
    看标题还以为人被优化了,原来是代码的优化
    ericls
        7
    ericls  
       2019-12-18 12:57:18 +08:00 via iPhone
    @waterlaw 楼主这个不是代码质量问题 而是性能优化

    自己写 lib 倒是可以
    写 application 和 product 千万不可 因为这些是给人用的 人是很难预测的 所以你对假定情景的优化成本太高
    ericls
        8
    ericls  
       2019-12-18 12:58:10 +08:00 via iPhone
    如果你的优化没有 assumption 那你就是万能的预言家了
    bk201
        9
    bk201  
       2019-12-18 12:59:14 +08:00
    想太多的结果会造成工作量没法和老板交差
    shawnsh
        10
    shawnsh  
       2019-12-18 12:59:27 +08:00   1
    除非优化对公司产生效益了,要不然白优化。还有你写的程序不一定是整个软件的性能瓶颈,说白了你在写的好,其他人写的垃圾,照样对产品没什么用。如果想重构倒是可以,优化就算了。
    ericls
        11
    ericls  
       2019-12-18 12:59:59 +08:00 via iPhone
    Freeego
        12
    Freeego  
    OP
       2019-12-18 13:00:31 +08:00
    @ericls 确实是写 application 的时候…明知道用户不会有什么感受,但还是控制不住。过早的优化是万恶之源啊!
    hehheh
        13
    hehheh  
       2019-12-18 13:00:54 +08:00 via iPhone   1
    把代码写的更健壮更易懂比代码运行效率提高那么几个百分点更重要。
    当然如果你是搞高频交易的当我没说
    hehheh
        14
    hehheh  
       2019-12-18 13:02:23 +08:00 via iPhone
    还有上边有个人说的很好,你的代码速度可能根本不是瓶颈,这个只有写过很大的工程才能明白。特别是当一个工程由几十号人开发了好几年过来的
    ericls
        15
    ericls  
       2019-12-18 13:03:12 +08:00 via iPhone
    @Freeego 这还是建立在用户想用这个功能的假设基础上的


    不过作为程序员 写优雅高效的代码 也是一种满足 但是那是兴趣 不是职业 如果有个公司能让你工作时候这么干 你好好珍惜吧
    wangyzj
        16
    wangyzj  
       2019-12-18 13:08:08 +08:00
    这是正确做法
    大前提是你要规划好进度
    littlewing
        17
    littlewing  
       2019-12-18 13:10:48 +08:00   1
    写一个组件的时候一开始就尽量写得可扩展可重用 这个是好的
    至于性能优化,开发阶段没必要,后续需要看瓶颈到底在哪里,再针对性优化
    dazhangpan
        18
    dazhangpan  
       2019-12-18 13:21:23 +08:00   1
    如果简单的操作能带来提升是完全可以一边开发一边优化的
    但是这些操作对一位程序员来说是不是简单
    是要看他对硬件 /操作系统 /软件架构的理解深度的
    在这方面思考多了,积累多了,是能从一下手写出来的就是性能向的优化代码的
    所以楼主完全不必纠结
    你这是勇猛精进的必经之路而已
    LiuJiang
        19
    LiuJiang  
       2019-12-18 13:26:02 +08:00
    一样,看到垃圾代码习惯顺手改掉,顺手改不掉得,后买再改。
    WillGoh
        20
    WillGoh  
       2019-12-18 13:39:22 +08:00
    如果时间够,那无所谓。如果不够,还是要考虑以下开发效率的,很多东西也不能一蹴而就不是吗?
    murmur
        21
    murmur  
       2019-12-18 13:40:17 +08:00
    开发如果你并发只能到 100 堆硬件后面改也优化不到 10000 是吧
    newtype0092
        22
    newtype0092  
       2019-12-18 13:40:28 +08:00   1
    以前我也这样,后来看了高性能 MySQL 才知道,这种根本不叫优化,就叫瞎折腾。
    优化一定是先分析和测试,找出效率低下的地方,然后设计优化方案并预估成本和能带来的改善,最后根据前面的信息决策,如果改善大于成本,那么就动手修改。
    所以修改代码只是优化过程的最后一小步,如果没有前面的所有工作,那这多余的一小步没有任何意义。
    dosmlp
        23
    dosmlp  
       2019-12-18 14:53:48 +08:00
    性能优化绝大多数情况下属于多余,还是代码结构易读性等比较重要
    elekids
        24
    elekids  
       2019-12-18 18:32:26 +08:00
    最大的毛病之一

    一定要克服
    akira
        25
    akira  
       2019-12-18 18:34:56 +08:00
    和你反过来,如果换一种写法 代码看起来更好阅读,即使会降低效率,那我也会换一种写法。

    性能优化是需要数字支撑的。
    低频的代码 优先考虑是上缓存,其次才是代码优化。
    高频执行的代码,需要确认瓶颈点以后,再进行优化。

    说真的,现在的系统,大部分情况下,逻辑代码都是没有性能问题的。优先保障业务正常,系统上线以后,再来考虑优化都来得及。 有业务的系统,才有资格讨论优化。死掉的系统,没有资格说优化的问题。
    wuwukai007
        26
    wuwukai007  
       2019-12-18 18:59:48 +08:00 via Android
    有很多时候明明是加一个变量就好的事情,偏要在那边死磕的优雅一点…
    uxff
        27
    uxff  
       2019-12-18 21:06:18 +08:00
    处了内存优化,还有设计优化,我也是同样有强迫症,看到设计不够好的代码,有强烈的冲动去把它改好。
    Honwhy
        28
    Honwhy  
       2019-12-18 21:26:43 +08:00
    首先完成需求是第一任务,至于优化需要看时间是否紧迫
    然后是优化的需要做好准备,涉及关联逻辑不影响到,这里做好单元测试,相信重构的力量
    《重构》
    XiLemon
        29
    XiLemon  
       2019-12-19 08:04:34 +08:00 via iPhone
    这是病,得治(手动狗头
    saltedFish666
        30
    saltedFish666  
       2019-12-19 09:37:07 +08:00
    你优化现在做了,以后还怎么优化赚钱???
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2677 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 13:52 PVG 21:52 LAX 06:52 JFK 09:52
    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