资深同事写的代码不够优化, 有拖后腿的潜力, 怎么说比较合适? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
raynix
V2EX    程序员

资深同事写的代码不够优化, 有拖后腿的潜力, 怎么说比较合适?

  •  
  •   raynix 2014-07-15 10:28:51 +08:00 9461 次点击
    这是一个创建于 4108 天前的主题,中的信息可能已经有所发展或是发生改变。
    66 条回复    2014-07-17 19:48:21 +08:00
    ipoh
        1
    ipoh  
       2014-07-15 10:33:13 +08:00
    优化很重要么
    skybr
        2
    skybr  
       2014-07-15 10:36:37 +08:00   7
    性能没构成瓶颈前不需要优化, 不然你们以后怎么拿出漂亮的性能提升比给BOSS看?
    wy315700
        3
    wy315700  
       2014-07-15 10:39:14 +08:00
    @skybr
    严重同意,只要代码能跑,能运行,那就先放放,把精力放在别的地方会比较好。
    等出了问题,然后再考虑优化。
    qonco
        4
    qonco  
       2014-07-15 10:39:26 +08:00
    too young too navie
    missdeer
        5
    missdeer  
       2014-07-15 10:43:04 +08:00
    过早的优化是万恶之源。

    最近我们leader设计的一个项目各种丑陋到想吐的设计源头都是优化效率,真是受不了了。
    raynix
        6
    raynix  
    OP
       2014-07-15 11:15:56 +08:00
    @skybr 好主意.
    raynix
        7
    raynix  
    OP
       2014-07-15 11:16:37 +08:00
    @qonco 这么说不大礼貌吧哈哈
    chundong
        8
    chundong  
       2014-07-15 11:18:40 +08:00 via iPhone
    code review
    fo2w
        9
    fo2w  
       2014-07-15 11:28:21 +08:00   1
    我觉得在谈这个之前理清楚到底是不够优化, 还是没达到基本要求
    比如, 明明一个循环可以搞定的事情, 写了2个循环, 这是没达到基本要求, 要说!
    但是, 如果是因为一些代码看上去技巧性不够, 或者想当然认为是没有写成最优写法
    那还是听ls的, 过早的优化是万恶之源, 一切等最后profilling
    nooper
        10
    nooper  
       2014-07-15 11:41:57 +08:00   1
    code review.
    keep small refactor.
    modify his dirty code.
    make his branch more conflict files exist.lol.
    ine181x
        11
    ine181x  
       2014-07-15 11:43:40 +08:00
    如果是代码写的缺乏可维护性,让其他人需要接手后续工作或他人review时根本看不懂,是问题;如果是性能问题,不是问题。
    leavic
        12
    leavic  
       2014-07-15 11:44:49 +08:00
    我觉得你可以跟他委婉的说,例如这样:

    傻逼你再不改行早晚饿死!
    leiz
        13
    leiz  
       2014-07-15 11:52:02 +08:00
    @leavic 哈哈
    anubiskong
        14
    anubiskong  
       2014-07-15 11:53:56 +08:00   1
    你可以让这个人负责审核代码
    summic
        15
    summic  
       2014-07-15 12:05:55 +08:00
    我的经验:前期各种设计得很好的项目都不怎么赚钱, 反而是那些 Quick&dirty 的代码赚到了
    Zuckonit
        16
    Zuckonit  
       2014-07-15 12:07:47 +08:00
    过早的优化是万恶之源。 首先考虑的是可维护性
    Navee
        17
    Navee  
       2014-07-15 12:12:15 +08:00
    @fo2w 同意!
    princeofwales
        18
    princeofwales  
       2014-07-15 12:12:51 +08:00
    原来你们写的代码不考虑性能问题,怪不得还没有成为“资深同事”
    wangdaimishu
        19
    wangdaimishu  
       2014-07-15 12:13:13 +08:00
    请记住互联网六字真言:先上线,再优化!
    66beta
        20
    66beta  
       2014-07-15 12:15:09 +08:00   1
    码农是不是都想太多,自己做项目的时候,虽然开始前多想好的,但是做着做着就觉得这样更好,那样更好,结果时间拖了再拖,这是不是一个坏习惯?
    solar
        21
    solar  
       2014-07-15 12:28:23 +08:00
    lz 图样图森破 拿衣服
    solar
        22
    solar  
       2014-07-15 12:29:33 +08:00
    @66beta 其实,拖到最后,就是“QTMD,就这样发布吧。”
    td width="48" valign="top" align="center">lazyphp
        23
    lazyphp  
       2014-07-15 12:36:57 +08:00
    关于过早优化是万恶之源,我不认同。
    这得有一个前提,就是你没经验。
    如果你做的项目,你有过相关的瓶颈经验。那么过早的优化肯定是一件好事。
    不过,能够做相同项目的经历估计很少。所以,多数都是走 先上线,后优化。
    ravenw
        24
    ravenw  
       2014-07-15 12:52:44 +08:00
    你得先确认你的判断是正确的,既然是资深,究竟是别人拖后腿还是你太弱没看懂还不一定呢
    抱着请教的态度讨论一下先
    huoshanhui
        25
    huoshanhui  
       2014-07-15 13:01:03 +08:00
    “还不知道瓶颈所在就匆忙进行优化,这可能是唯一一个比乱加功能更损害设计的错误。”

    --《Unix 编程艺术》,优化原则。
    wdlth
        26
    wdlth  
       2014-07-15 13:03:52 +08:00
    你一开始让我优化的时候我是拒绝的,优化得好怎么叫老板加钱上E3?
    vob636
        27
    vob636  
       2014-07-15 13:05:32 +08:00
    绝壁是互联网箴言!千万别过早优化,产品经理能玩死你,你放心吧
    wenbinwu
        28
    wenbinwu  
       2014-07-15 13:15:07 +08:00
    新来的同事对我的代码也有这感觉,我只有哈哈一笑
    dustinth
        29
    dustinth  
       2014-07-15 13:27:24 +08:00
    那得看你同事这么写是为了可读性特意为之还是真实的没有注意到, 新手常常犯的错误就是为了优化局部代码让代码可读性变差, 最后实际上瓶颈根本不在那里.
    Livid
        30
    Livid  
    MOD
    PRO
       2014-07-15 13:38:08 +08:00   3
    性能和内存占用这样的东西,是应该有一个系统持续去监控的。并且团队里所有人应该都可以看到这个系统的数据。

    在一个有责任心的团队里,如果团队成员在系统中看到了一个可以优化的点,那么有把握的话就进行优化,然后或许第二天整个团队都可以在 APM 系统中看到某个柱子降下去,这对于所有人都是非常有意义的正向反馈。
    t2doo
        31
    t2doo  
       2014-07-15 14:25:51 +08:00
    只求能运行,再丑的代码都是亲儿子,`爹爱你们啊~~~`
    zenwong
        32
    zenwong  
       2014-07-15 14:32:41 +08:00
    为什么要把心思放在研究如何纠正别人的不对上呢?多看看自己,多想想自己。
    raynix
        33
    raynix  
    OP
       2014-07-15 15:02:31 +08:00
    谢各位的回复, 特别是 @Livid

    需要说明的是, 这只是一个虚构的题目. 因为我个人还是很在意代码性能的, 因为一行代码坏了一个服务器是有可能的.
    jiawenjun1126
        34
    jiawenjun1126  
       2014-07-15 15:42:26 +08:00
    @summic 而且很多项目都是设计死的。
    Email
        35
    Email  
       2014-07-15 15:46:01 +08:00
    直接打击, 你们的项目根本没有面对市场的希望, 就这样吧,洗洗睡.
    dopcn
        36
    dopcn  
       2014-07-15 15:57:09 +08:00
    我觉得要看自己的位置
    如果自己也是资深同事甚至架构 Boss,那直接交流
    如果自己是菜鸟,先用代码证实自己的想法吧
    davepkxxx
        37
    davepkxxx  
       2014-07-15 16:01:02 +08:00
    要避免过度优化
        38
    raynix  
    OP
       2014-07-15 16:28:03 +08:00
    > 为什么要把心思放在研究如何纠正别人的不对上呢?多看看自己,多想想自己。

    王对张说: 为什么要把心思放在研究如何纠正别人的不对上呢?多看看自己,多想想自己。
    李对王说: 为什么要把心思放在研究如何纠正别人的不对上呢?多看看自己,多想想自己。
    赵对李说: 为什么要把心思放在研究如何纠正别人的不对上呢?多看看自己,多想想自己。
    ...

    ^_^
    raynix
    raynix
        39
    raynix  
    OP
       2014-07-15 16:28:51 +08:00
    @dopcn 对的.
    zaishanfeng2014
        40
    zaishanfeng2014  
       2014-07-15 16:30:59 +08:00
    跟你有关系吗?小孩
    williamx
        41
    williamx  
       2014-07-15 16:31:38 +08:00
    刚入行的时候写代码性能是第一优先级;不知道什么时候开始性能成了最后考虑的问题了。话说现在时间都花在了诸如:这个名字应该叫什么、这行代码放在这个函数是否合适、这个文件应该放在哪个目录下,这样的事情上了。
    jp5490
        42
    jp5490  
       2014-07-15 16:51:26 +08:00
    @williamx 取名字什么 最讨厌了。。。。。。
    Pixeller
        43
    Pixeller  
       2014-07-15 16:56:13 +08:00
    依项目而定, 同时估计下优化能得到的效率或损失, 如果已达到n2增长的bug级别 最好还是趁早说, 如果不是 请别钻牛角尖-.-!, 关键是要求好自己, 对以后自己的项目和团队都有好处.
    最后我只能说大部分不关心效率的80%的时间其实都是在写ui和相关逻辑, 优化待到项目完成才进行的我会说请不要搞笑么? 数w行的小项目, 看uml都能头大别说看代码.
    zhangdawei
        44
    zhangdawei  
       2014-07-15 17:02:39 +08:00
    性能优化是迭代出来的,
    可维护性优先级更高吧。
    guoxx_
        45
    guoxx_  
       2014-07-15 17:42:44 +08:00 via iPhone
    不是所有的烂代码都能用后期优化当借口的。
    以我自己的经验来说,一个有可能比较长的有序数组的插入操作,如果实现成n的复杂度,那是不能接受的,实现成对数复杂度才可以(手机回复,不方便打公式)。这类代码属于写的时候就该想到的事情。
    还有关于后期优化,我见过的代码里就真有我上面说的问题的,还是一个很著名的产品。作为library或者framework的提供者,你可能没有机会对你的代码进行详尽的优化,所以建议写的时候多留点心。
    另外针对楼主的问题,@Livid的做法很好,条件不允许的话code review也是一个很好的办法。
    raynix
        46
    raynix  
    OP
       2014-07-15 17:46:22 +08:00
    @guoxx_ 所言极是.
    a591826944
        47
    a591826944  
       2014-07-15 17:47:56 +08:00
    @williamx 这叫架构。。兄弟你上道儿啦
    cmingxu
        48
    cmingxu  
       2014-07-15 17:53:40 +08:00
    先活下来再考虑性能优化, 代码简洁吧;

    写代码重在团队协作; 还有一点就是尽量不要给项目内引入只有少数人熟悉的技术, 语言; 这绝逼是万恶之源。
    cmingxu
        49
    cmingxu  
       2014-07-15 17:55:09 +08:00
    @williamx 严重同意
    vjnjc
        50
    vjnjc  
       2014-07-15 23:17:51 +08:00
    @Livid Hello,我看到你提及APM,请问你们使用什么监控软件的APM的啊?
    vjnjc
        51
    vjnjc  
       2014-07-15 23:19:24 +08:00
    关于楼主的问题我也考虑过,性能问题不是最优先的,我感觉代码的可阅读性很重要。毕竟机器性能和人力比起来我感觉人力比较宝贵。
    akira
        52
    akira  
       2014-07-15 23:25:30 +08:00
    既然是资深了,他自己心里也应该知道什么需要优化 什么不需要优化了吧
    em70
        53
    em70  
       2014-07-15 23:58:44 +08:00
    @lazyphp 99%的互联网项目死掉都是因为只有100个用户的时候去考虑一亿用户的事情,快速迭代,先上线跑,不断改进才是正道,QQ就经历过4次大的重构,早期就一个服务器跑,然后两个服务器数据和逻辑分离,然后再上集群,如果马化腾2000年就做个上亿用户的构架,QQ早就因资金链断裂死了
    zjgood
        54
    zjgood  
       2014-07-16 00:16:27 +08:00 via Android
    图样图森破。
    飞鸟尽,良弓藏。
    mikuazusa
        55
    mikuazusa  
       2014-07-16 00:17:55 +08:00
    让测试人员去证明质量就行了。
    mikuazusa
        56
    mikuazusa  
       2014-07-16 00:19:56 +08:00
    @Livid 我们部门已经把这个“APM系统”放到小米电视上去挂在每个部门的办公区显眼处让每个人出入都可以看到最实时的数据。确实很不错。
    raynix
        57
    raynix  
    OP
       2014-07-16 07:53:27 +08:00
    @em70 代码优化恰好能延迟硬件方面的扩张吧.
    hekailiang
        58
    hekailiang  
       2014-07-16 08:03:11 +08:00
    可以考虑先设计benchmark test,先拿到性能测试的基准数据。
    2ex
        59
    2ex  
       2014-07-16 08:45:16 +08:00
    我们这儿资深的都是不优化代码的,用最简单的方式方法完成一个项目,达到需求方的要求就可以了。
    时间紧,项目多,如果每个项目都力求完美,那就是给自己挖了个坑。
    cai314494687
        60
    cai314494687  
       2014-07-16 09:52:57 +08:00
    code review 是个好方法
    unnya
        61
    unnya  
       2014-07-16 10:09:05 +08:00
    作为产品狗看完这贴声泪俱下

    虽然我的team基本都是最简单实现(第一版)功能加强版(第二版)性能提升(第三版)优化总结(第四版)

    做着做着,半年就过去了……
    aurorawu
        62
    aurorawu  
       2014-07-16 10:23:45 +08:00
    每个项目都是一个坑~可读性太重要了,性能优化倒其次~
    jarlyyn
        63
    jarlyyn  
       2014-07-17 00:22:30 +08:00
    看到图标才发现是楼主……
    你不是去澳洲了么……
    感觉优化不优化,还是看代码生命期,以及用途的。
    非核心用途的,用个几年就要替换的,没必要去优化…………
    到是可读性以及可修改比较重要。
    raynix
        64
    raynix  
    OP
       2014-07-17 11:30:54 +08:00
    @jarlyyn 澳洲也可以用v2ex吧 :D

    同意你关于可读性的看法.
    jarlyyn
        65
    jarlyyn  
       2014-07-17 12:21:29 +08:00
    @raynix 我的意思是和老外怎么处理人际关系,中文圈子的建议价值不大吧……
    raynix
        66
    raynix  
    OP
       2014-07-17 19:48:21 +08:00 via Android
    @jarlyyn 也还好,有些回复我很赞同。估计这里跟鬼佬共事的不在少数
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana &nsp;   916 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 21:22 PVG 05:22 LAX 14:22 JFK 17:22
    Do have faith in what you're doing.
    ubao 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