V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hbolive
V2EX  ›  程序员

千万不要相信码农说的,任务太紧,没时间优化代码

  •  
  •   hbolive · 2020-04-15 18:08:39 +08:00 · 21355 次点击
    这是一个创建于 1464 天前的主题,其中的信息可能已经有所发展或是发生改变。

    没办法写得像一坨屎,这类的言语。。

    我们公司,自己的产品,二三线城市,岗位实际很闲,下班到点走人,有任务来了也从来不赶着做。。 有码农若干,包括以前来来去去的,也是不少了,但实际上没一个人说,会把自己代码优化好,都是怎么实现任务了事。 做完了测试也是大概测一下就提交,等出了问题( bug 或者性能上的)再改。

    第 1 条附言  ·  2020-04-15 19:06:06 +08:00
    大家讨论很激烈嘛,思想碰撞是好事,但是某楼层貌似嘴巴有点脏。。
    1 、我说下班到点走人,不是说不应该走人,而是说下背景:公司并不忙;
    2 、举个优化的简单的例子:
    读取一个用户列表,这个列表有些属性要从另外一张表读(比如所在城市),做法是:先读取列表数据成数组,然后再遍历这个数组,遍历的时候再根据城市 id,再去查询地区表,得到城市的名字。

    各位大佬觉得可以优化下不?这个优化会出很多 bug ?觉得这种操作很水?是的,就这么水。。
    第 2 条附言  ·  2020-04-15 19:13:24 +08:00
    再强调下下班走人的问题,我职位算是部门负责人吧,此为背景。
    其实老板明着暗着给我说过几次要抓管理(适当加班),当面点头欧,但是我没执行,就这事我给总经理助理说过,我说公司本来工资就低,能按时完成任务就行了,加什么班,一加班人都跑了。(我心说要加班我都得撂挑子走人)
    面试的时候,我一般会说非特殊情况公司一般不加班(事实上一年下来几乎没加过 1 天班)。

    你们盯着下班走人这个点也没啥意思,就是想说明,公司并不忙。
    第 3 条附言  ·  2020-04-16 17:42:00 +08:00
    好像是最后一条附言了啊,我平时来得不多,也不怎么发言,没想到领到个十大第一,真实荣幸之至。。由于留言太多我也来不及看,也不一一回复了,只是感谢大家捧场。。

    当然有部分同学,理解力是有点堪忧的啊,让我怀疑高考语文可能没及格,我随便翻到第 3 页的一个回复:
    不给钱让加班去做重构优化?你在想 peach

    你哪只眼睛看到我写了,让“加班”去做“重构优化”的?希望其他同学引以为戒啊,不要鸡冻乱喷啊,最容易被带借节奏了。。

    其实我就是想说,我们公司码农其实很闲(从未加班都是到点走人,有任务时也是尽量的给宽松的时间,就算到了时间点只要说明下,我一般也不催),但是很闲的同时,对于自己写的一些可以优化的代码,并没有想着空闲时间去优化一下。这个优化,不是架构,也不是改数据库,就是纯粹的代码级别的逻辑可以改进。。

    以前网上经常听人说,项目太赶,没时间好好写代码,所以我才拿出来说一说。有的同学说得也好,可能在他看来,这个就是他能写出的最优的代码了,没办法更多要求,确实也是,在我们这 IT 荒漠,还能强求啥呢。。

    最后一点感悟,最近俩月微信推送的新闻,明显比以前更标题党了,所以昨天我发帖也特意用了些夸张的词汇,事实证明确实很!有!!效!!!

    如果部分同学脆弱的小心灵受到了伤害,我在此道歉哈,改天我一定写一篇《码农颂》送给大家,好好褒扬一下我们这群无怨无悔付出青春与血汗的同学们!
    221 条回复    2020-04-20 12:29:54 +08:00
    1  2  3  
    sherblue
        101
    sherblue  
       2020-04-16 10:10:16 +08:00
    有些优化==从 0 开始,你干不干。/doge
    ShotaconXD
        102
    ShotaconXD  
       2020-04-16 10:17:08 +08:00
    开发的一个原则, 如无必要(重点), 基本上不会修改现有逻辑.
    我赞同题目, 但不赞同无脑优化.
    如果你并不能针对这个功能为什么要优化, 说出来个一二三, 那我觉得你在无中生有 你在暗度陈仓 你在凭空想象 你在凭空捏造 你在无言无语 你在无可救药 你是逝者安息 你是一路走好 你是傻子巴拉 你是永无止境 你是没钱买药 你是头脑有病 你是眼里有泡 你是嘴里刘能 你是污言秽语 你是咎由自取 你是殃及无辜 你是祸害众生 你是仓皇失措 你是暗度陈仓 你是无可救药 你是无颜面对江东父老 你是人模狗样 你是臭气熏天
    lucky215
        103
    lucky215  
       2020-04-16 10:17:21 +08:00
    不一定要加班才能解决优化的问题吧,如果真觉得需要优化,就规划安排计划,一点点执行下去,这样不行吗
    ShotaconXD
        104
    ShotaconXD  
       2020-04-16 10:18:11 +08:00
    @ShotaconXD #102 玩个梗 不喜勿喷昂= ,=
    bk201
        105
    bk201  
       2020-04-16 10:20:05 +08:00   ❤️ 1
    1.优化出问题你如果保证兜底
    2.优化好了你保证有奖励
    3.优化给额外时间
    先做到上面 3 点再说吧。
    AngryMagikarp
        106
    AngryMagikarp  
       2020-04-16 10:20:50 +08:00
    不排除有人拿“以后优化”作为借口。但也不能一棒子打倒。
    我以前工作的时候能看到很多可以优化的点,但项目不是一个人做,要优化牵扯的东西太多,一个人根本推不起来。另一方面,时间也不允许。有的需求早上说,下午就要,确实不能指望代码多好。

    优化绝对不是一个人的事,而是团队的事。对于很多公司来说,代码能跑起来就好了,管他什么优不优化。这个时候去苛责程序员做优化的事,未免有些舍本求末。
    AngryMagikarp
        107
    AngryMagikarp  
       2020-04-16 10:21:32 +08:00
    @bk201 说到点子上了。
    dog82
        108
    dog82  
       2020-04-16 10:22:35 +08:00
    代码再烂,能满足业务需求就行。优化一下带来新的 bug,谁承担责任?
    一定要定期对关键代码做 review,其它边缘的就算了
    bayker
        109
    bayker  
       2020-04-16 10:28:28 +08:00   ❤️ 1
    实际无数次证明:开发的时候就就优化好,测试好,比生产上出了问题再去处理更节约劳动力。节约大概 10 倍。

    比如:开发的时候多测试一下 多发现了一个 BUG 就处理了,可能就多花 20 分钟。 但因为这个 bug 导致了生产上大量数据错乱,系统崩溃,这时候再去处理可能就会花 2 天时间。

    楼主说的没错的。
    whp1473
        110
    whp1473  
       2020-04-16 10:34:17 +08:00
    读取一个用户列表,这个列表有些属性要从另外一张表读(比如所在城市),做法是:先读取列表数据成数组,然后再遍历这个数组,遍历的时候再根据城市 id,再去查询地区表,得到城市的名字。

    大家说说这个怎么优化,见过很多代码都是这样实现的,其实我倒觉得一般这么查询也没什么,效率低而已,多次请求 DB 。
    优化考虑:
    (1)设计用户表时冗余显示城市字段,但是这样会造成城市表修改后不变
    (2)查询时按照一次性取出所有用户城市,Map<User,城市>形式填充 User
    (3)Left join 形式查询,就怕关联表特别多
    (4)异构专门的查询表,或异构到 Es 中做查询,性能有保障,会牺牲部分实时性

    我们这边的代码,很多都是这样写的,我一般都不会改。改了不算绩效、之前需求产品都说不清是什么、不用多改错一次可能就 3.25 。或者直接找 P7,同时给他时间,别今天需求,明天上线。
    Hbris
        111
    Hbris  
       2020-04-16 10:34:58 +08:00
    后续优化不如前期设计。所以需求分析还有详细设计十分的重要,但现在很多公司因为项目紧就把这两个给砍了或者压缩的特别紧。写某块代码时,我有很多个想法,但要一一实现并分析出其中的区别是需要时间的。但可惜,我通常为了完成任务,只会选择最简单,最傻脑的方案(简单,无脑,开发快)。
    oatw
        112
    oatw  
       2020-04-16 10:37:38 +08:00   ❤️ 2
    破窗效应。

    如果接手的代码就是一陀屎,大概率不会有人有心情去优化,工作是永远做不完的,老板不会因为你优化了代码涨工资,也不会因为维护起来效率高了就让你闲着。更可能的情况是又为了迁就这陀屎,不得不写更多屎一样的代码。

    理想化的持续重构针对的是设计良好的代码,对屎一样的代码唯一的解决办法是全部重写!

    反过来讲,如果接手的就是干净、清爽、有设计、上层次的代码,也不好意思去污染。所以,前期打基础的那批人很重要。
    shiguiyou
        113
    shiguiyou  
       2020-04-16 10:39:23 +08:00 via iPhone
    看情况吧,需求写完转测阶段我本来有时间优化的,但还是选择摸鱼
    keepeye
        114
    keepeye  
       2020-04-16 10:39:25 +08:00
    我觉得这事吧 你也有责任 不会管理
    caola
        115
    caola  
       2020-04-16 10:43:38 +08:00
    我对优化的理解就是重构……[dog]
    inhal
        116
    inhal  
       2020-04-16 10:46:43 +08:00
    看工资来吧,工资低的话,谁有心情优化。拿我自己来说,公司就给 5k,我前后端都得写,真的懒得管代码质量,写得好又不涨工资。
    NotFoundEgg
        117
    NotFoundEgg  
       2020-04-16 10:55:52 +08:00
    我曾经也想把自己之前写过的代码重构 后来想想算了 从今以后规范就好
    私自优化代码出了问题 谁来背锅?
    私自优化代码的时间从哪来?
    私自优化代码算不算工作量 算不算绩效?
    neilq
        118
    neilq  
       2020-04-16 10:57:16 +08:00   ❤️ 4
    根据我的观察,有的人呢,不管给多少时间,写的代码就像楼主例子那样的一坨屎。有的人呢,不管给多少时间,随手写出来的代码都是干干净净的。这个就是程序员之间的能力差异,不用找那么多借口。

    作为管理人员,碰到楼主所说这种例子,如果时间紧,我不会介意他们这么做。

    如果时间很充裕,不好意思,下次汇报我会直接说这个人不行,建议不要涨工资或者少涨点意思意思。我绝对不会这么说:哎呀,他只是工资少才会这样,多给他涨点工资写的代码就很厉害了,不可能的,工资多少他都是这种水平。你有高水平,我会想办法给你高工资,而不是我给你高工资,你就会有高水平,有些人不要搞反了,别动不动就什么精神股东,你不行就是不行。也不要说什么优化会有 bug,怕后期优化有 bug,那你代码出厂就是优化好的不行吗,我觉得遍历 id 读 10 次 db 改成读 1 次 db,这样优化一下还能改出 bug 都不自测的人那实在太水了?别优化有 bug 了,有些人不优化都能有一堆 bug,我还见过拿非全局变量来做全局锁的人呢。

    睁大眼睛,看好前提,时间很充裕。
    wr410
        119
    wr410  
       2020-04-16 11:00:05 +08:00
    不存在的,有时间只能是摸鱼,优化就只能等到这块需求完全变动或者大版本升级的时候,你想自己优化测试才不帮你回归呢
    asAnotherJack
        120
    asAnotherJack  
       2020-04-16 11:01:56 +08:00
    本来能用的东西,优化好了没功,但是不小心改出问题可是要担责的
    zhangrh
        121
    zhangrh  
       2020-04-16 11:05:11 +08:00
    实话讲, 如果你是负责人, 你才是摸鱼那个.
    a7217107
        122
    a7217107  
       2020-04-16 11:05:25 +08:00
    还有人查 count,数据库 select all 返回 size()的,我说怎么统计数量接口每次都触发两次 GC
    pkookp8
        123
    pkookp8  
       2020-04-16 11:07:33 +08:00 via Android
    一般如果不是任务性的优化
    都是伴随着代码修改顺带提交的,比如减少循环。去除不必要的代码。某些简单的机制进行修改顺带引入一个框架,但暂时不去除原有的代码。提取并复用某些接口
    等等。一般最多会拉长工作时间 1 天,再多就不应该伴随代码修改而随意改动了

    任务性的优化可能就是比较大的重构了。很少参与这类修改。只做过一次,把多套代码的相似功能合一,的确是比较累的
    darknoll
        124
    darknoll  
       2020-04-16 11:09:10 +08:00
    要学点职场相关的知识,别整天优化优化的,小心哪天把你优化掉
    rockjike
        125
    rockjike  
       2020-04-16 11:11:13 +08:00
    优化还不如 code review 实际, 从源头控制
    Alpha2J
        126
    Alpha2J  
       2020-04-16 11:15:19 +08:00
    @oatw 不能再赞同了
    evangelist64
        127
    evangelist64  
       2020-04-16 11:16:22 +08:00
    这事最好的解决办法就是靠自觉,开高薪去招技术过硬,自我要求高的码农,就可以解决这个问题。
    其次就是 code review,最起码有一个靠谱的主程,组织好每个版本的 code review,逐步建立以写优质代码为荣的风气。
    最后那就只能定指标,排任务,强制要求每个功能达到什么性能标准。

    你让程序没事自己去优化那是不可能的,改好了没奖励,改坏了要背锅,有这时间我去搞学习,撩妹子,划水什么的,不香么?
    你自己也说了,一个经了 n 个人手的项目,开的工资还低,负责人技术水平也不高(从你举的那个例子来看),这种问题基本无法避免,就认了吧。
    guogang9011
        128
    guogang9011  
       2020-04-16 11:17:10 +08:00
    讲一个不太相关的事情,看到这个下面的评论想到的

    年后老板让我做我这个部门的负责人,只是口头上说的,没有文件下达,工资也没有涨,所以我觉得无所谓,干就干着呗。
    但是实际干的时候就不一样了,本来愉快的同事关系变的不愉快了,当然变的不愉快的是少数。我其实是很纳闷的,为啥只是名头上的称呼变了,关系就变了呢。

    因为我也就是打工的,拿着死工资,虽然名头上变了,但是实际收入没变化。所以之前我在部门啥样,现在就啥样。
    我们部门有开早会的习惯,每天早上几分钟的样子,因为有段时间全部没事干所以开会也就没意义了,就停了几个月吧。老板有时候会问我每个人的进度,前两回我一脸懵逼,就说还行,但是一直这样不行啊,所以这个早会的事情就和以前一样了,每天早上几分钟。内容无非就是昨天干了啥,今天要干啥,或者这周要干啥,因为项目多了,要干的事情还是不少的,每天都挺忙,也挺充实。

    我觉得这样还挺好的,而且我们之前是单休,现在变成单双休了,双休的那一周真还挺爽的。

    不一样的来了,细节太长懒得说,但是有人对我有意见了,我真的是无语死了。昨天还直接找我领导提意见去了,我真真的是。。。直接和我说不行?你找我领导,对你是不好的其实。

    在那些对我有意见的同事眼中,我是不是就是评论下面所谓的“精神股东”,哈哈哈。

    我还在领导那边讲对我有意见人的好话,我是不是傻?
    whypool
        129
    whypool  
       2020-04-16 11:17:44 +08:00
    优化个锤子哦
    又不是不能用
    花大量时间响应提高了 100%,还不如加机器
    这点人力投入成本不比加机器低
    V69EX
        130
    V69EX  
       2020-04-16 11:26:10 +08:00
    @whypool 有些垃圾代码,你就加一亿台 EYPC 也会崩溃……:-D
    f056917
        131
    f056917  
       2020-04-16 11:37:21 +08:00
    给多少钱干多少活儿,现在有一些没有自知之明的公司,总想着给一点点钱就让人家给你卖命
    hantsy
        132
    hantsy  
       2020-04-16 11:45:54 +08:00
    优化代码,重构,去掉 Bad Smell 应该是一种习惯,是每天的工作内容。没时间的什么,其他都是借口。
    sgissb1
        133
    sgissb1  
       2020-04-16 11:47:47 +08:00   ❤️ 1
    其他人看开发:永远不要相信开发没时间写,很复杂等等,其实他们很懒等等
    其他人看产品经理:永远不要相信产品经理,这个东西很简单之类的话,他么其实只是想让识别一下眼睛和瞳孔位置,并以此根据反射光线知道用户在用什么颜色的手机壳
    其他人看测试:永远别相信测试这个 bug 很重要之类,因为很多客户基本只有 80%的时间在 20%的功能上使用。
    其他人看老板:永远别相信老板的鬼话,因为他们每个月赚几个亿甚至几十个亿是很痛苦的
    其他人看女朋友:永远别相信女朋友说的你不在乎我了,因为他们除了只会试探你以外,和让你做忠诚的舔狗。
    其他人看男朋友:永远别相信男朋友说的我爱你,因为男人都是大猪蹄子。
    其他人看抗战影视剧:永远别相信抗战影视剧,因为裤裆藏雷都能拍出来,还有什么可看的。
    其他人看 IT 圈的人:永远别相信他们不会修电脑!


    我看楼主:世界上的价值观总是被少数人主导,比如赚钱几十亿很痛苦,兄弟情谊下大裁员,没有任何人比建国更懂一切等等。因为价值观被少数人主导,真实的财富也在少数人手里,大部分人某种程度上可以看做价值观或财富的韭菜 /羔羊(你我也不例外),本来生活就很难,人和人之间何必互相为难。不能因为少部分人就给整个集体提上一个标签,也不能因为大部分人也给整个集体贴上标签。

    动物界的思维模式有很强烈的”经验模式法“,大部分日常行为和活动,都是学习后再回放学习的过程。这也很容易导致刻板影响。

    经验模式法的好处在于降低了对”新环境“的再次学习成本,但也容易被这种便利的过程影响我们的认知,因为容易忽略习以为常以外的很多事情。

    且行且珍惜。
    hantsy
        134
    hantsy  
       2020-04-16 11:49:52 +08:00
    @yl666 P7+有那个能力?
    z5864703
        135
    z5864703  
       2020-04-16 11:56:00 +08:00   ❤️ 1
    楼主想表达的就是能不能认真写好代码,而不是写一堆代码还需要别人擦屁股的,是做事态度问题吧,和加班没关系。
    自身技能是如何提升的?写完成任务的即可的代码还是写一份健壮性高的代码?
    还有一点就是,很多人水平所限,这已经是他们所能写的相对 OK 的代码了,这种是需要整个体系去改善的,比如前面提到的 codereview,还有技术分享培训等,推动部门的人共同进步,相信还是有很多人愿意学的。
    biossun
        136
    biossun  
       2020-04-16 11:57:41 +08:00
    你们真的有时间,就每周拉一会议室,当面 review 代码。
    hugo2lee
        137
    hugo2lee  
       2020-04-16 12:03:18 +08:00
    给多少钱干多少事, 闲的就是这个价, 每个人心里都有杆称
    公司觉得亏了会炒人, 打工仔觉得亏了也会辞职
    不然就同岗同酬公开每个人的薪资, 然后大家搞 KPI
    既然你们老板都不想炒人, 说明还可以接受嘛
    负责人就要想办法证明自己的人格魅力了 怎么让下属可以为你卖命 让你的 KPI 又快又好
    index90
        138
    index90  
       2020-04-16 12:14:45 +08:00
    跟能力有关系,能力强的,代码一次性写好,能力弱的,只能优化好几次
    HiShan
        139
    HiShan  
       2020-04-16 12:51:35 +08:00
    嘿嘿,刚好我有经验。 之前发现项目中有些代码写的很乱很差还没有单元测试,就试着去重构,大概花了一周的时间重构加上单元测试之类的,重构完了提测让之前写这块代码的人 review 一下,结果写这个代码的人来了一句:你写的代码太多了,我没时间看。就把我的重构代码 reject 了。 :) 以后再烂的代码 我的都不会碰了。
    HiShan
        140
    HiShan  
       2020-04-16 12:53:54 +08:00
    @HiShan 我们领导也天天说那需要优化这需要优化的,也从来不管理开发流程和质量之类的。
    zongren
        141
    zongren  
       2020-04-16 13:06:57 +08:00
    码农是自嘲的,怎么感觉你在骂人#狗头#
    lzuntalented
        142
    lzuntalented  
       2020-04-16 13:08:00 +08:00
    为什么要优化代码?
    之前的代码太挫,谁写的?
    自己写的,为什么代码这么差?
    能力有限,怪自己( end )
    别人遗留 + 自己补充
    怎么简单怎么来,怎么轻松怎么写(背景:写的好没奖励,工资给的不到卖命的地步)( end )
    领导布置的任务
    算工时,安排优化( end )
    不算工时,哪有时间给你优化,怎么闲怎么来(背景:工资给的不到卖命的地步)( end )
    总结:付出总期望获得回报,如果你要求别人给你卖命,就得拿出对应的回报,老话(无利不起早)
    huxiweng
        143
    huxiweng  
       2020-04-16 13:16:00 +08:00
    读取一个用户列表,这个列表有些属性要从另外一张表读(比如所在城市),做法是:先读取列表数据成数组,然后再遍历这个数组,遍历的时候再根据城市 id,再去查询地区表,得到城市的名字。
    ————————————————
    这种员工我直接开掉,留着干啥。
    fuxu
        144
    fuxu  
       2020-04-16 13:16:03 +08:00 via Android
    想杜绝混子的话,提高薪资,提高要求,当然,如果只提高要求不提高薪资的话,emmm
    huxiweng
        145
    huxiweng  
       2020-04-16 13:17:44 +08:00   ❤️ 1
    @bk201 写优质的代码难道不是程序员应该追求的事吗?为什么会有“优化好了保证有奖励”的想法?
    skyworker
        146
    skyworker  
       2020-04-16 13:26:10 +08:00
    @smallyu 涨工资不一定, 不过如果被优化, 你绝对是第一个
    chocotan
        147
    chocotan  
       2020-04-16 13:30:30 +08:00
    楼主就是地图炮,还怪人嘴巴脏?
    UnknownR
        148
    UnknownR  
       2020-04-16 13:32:05 +08:00
    看人把,看以前项目的代码恨不得全部重构一遍。有时候看了一些大佬的代码学习到些东西,再回头看自己以前写的破代码,又想重新写一遍。可惜项目还是挺忙的,没啥时间,至于楼主说的情况,项目闲钱不多,那大家几乎都是拿钱干活,公司没有大牛没有技术氛围,大家就逐渐习惯了舒适圈,优化代码这种事自然没人会去做,小公司的话就别奢求这么多了,代码质量才是第一位
    skyworker
        149
    skyworker  
       2020-04-16 13:43:53 +08:00   ❤️ 3
    @huxiweng 程序员这份工作, 跟其他工作一样, 分两种人:

    1. 一种是得过且过, 面向工资编程, 浑水摸鱼(楼上大部分喷子都是)
    2. 另一种责任心强, 对自己和对工作都有责任心

    第一种人, 今后的职业生涯不怎么样, 到 35 岁后,就到了分水岭, 没什么进步和积累, 转行送快递也不错.

    能有进步和发展的, 往往是第二种人.
    bnm965321
        150
    bnm965321  
       2020-04-16 13:48:29 +08:00
    控制代码质量其实是为自己负责。如果代码质量糟糕,会发现项目中后期天天解决 bug 的时间比开发的时间还多,非常的痛苦。
    saulshao
        151
    saulshao  
       2020-04-16 13:50:26 +08:00
    其实我对于楼主举的这个代码的例子有点困惑,难道不是他说的做法才对吗?这个思路虽然有一些优化的余地,但是搞关联查询不是互联网程序都不提倡这么干吗?
    最多也就是提前把城市表读到缓存里,然后再去查询缓存库。
    deyu
        152
    deyu  
       2020-04-16 13:50:33 +08:00
    码农 就已经得罪站内大多数人了 哈哈哈
    bnm965321
        153
    bnm965321  
       2020-04-16 13:52:12 +08:00
    @saulshao 不做关联查询,也应该用 IN subquery 把
    mmixxia
        154
    mmixxia  
       2020-04-16 13:58:48 +08:00
    看到楼上的评论我就放心了。
    ConradG
        155
    ConradG  
       2020-04-16 14:09:54 +08:00
    “遇事先想自己再想别人”,不知道 LZ 的领导是不是这么说 LZ 的,但是我觉得很适合 LZ 的情形。
    czar
        156
    czar  
       2020-04-16 14:11:26 +08:00
    屁股决定脑袋,楼主在码农论坛发这个...
    caaat
        157
    caaat  
       2020-04-16 14:16:22 +08:00
    不忙是有多不忙
    看别人的代码,特别是写的乱七八糟的,杜天舒
    JustRookie
        158
    JustRookie  
       2020-04-16 14:25:01 +08:00
    @casillasyi 题外话,请教下大公司怎么优化代码的😂。待的小公司全是 if else switch 啥的。赋值 set()能有几十行
    no1xsyzy
        159
    no1xsyzy  
       2020-04-16 14:33:11 +08:00
    只是菜罢了,借口可以找一堆
    语义优化 > 效率优化
    如果 IDE 语义不优化下面就标红的(检查拼写),那强迫症和完美主义者都是会去改的。
    azhangbing
        160
    azhangbing  
       2020-04-16 14:38:29 +08:00
    优化风险大啊,我重构都有点战战兢兢的一点点重构,优化也看不到绩效的提升, if else 可以用 switch 代替(误),考虑工厂或者策略模式,再不济 if()里面的判断也要抽出来方法,方法名要通俗易懂,检查方法参数的可以考虑用责任链模式写一串 checker,等等
    yl666
        161
    yl666  
       2020-04-16 14:48:18 +08:00
    @hantsy 我接触的好几个 p7 感觉还是挺厉害的
    fyxtc
        162
    fyxtc  
       2020-04-16 14:50:02 +08:00
    做得好,理所当然
    做的不好,千夫所指

    兴,百姓苦;亡,百姓苦
    何解?权与贵二者取其一
    lagoon
        163
    lagoon  
       2020-04-16 14:52:02 +08:00
    怎么说呢,我也试过,很闲,但无人优化代码的状态(我也不优化)。

    之前待过的某家公司时的经历可见一斑。

    刚入职没多久时,周末自己在家主动重构代码。
    后来写好就不管了。


    原因大致有几点:
    1 、项目是否跟人?优化是否能带来好处?
    比如当时就出现了,人不跟项目走的尴尬情况。A 项目优化好了交给别人,接手垃圾 B 项目,后来又接手回 A 项目。A 项目再次乱成一团。

    2 、码农对未来安排是否明确,码农是否有话语权?
    优化不是指改几个变量名,很多时候涉及结构性优化。比如我们当时,就处于很闲,但随时待命的情况。不敢优化。比如你预计优化要花 1 周,然后 2 天后领导忽然通知,要上线功能,3 天后上线。几次之后,就再也不想优化了。
    如果我知道离下个版本还有时间,又如果我能争取多 1 、2 天,可以加加班把优化和新功能都做完,我是愿意优化的。但如果码农完全无话语权,时间很赶且锁死,这样就悲剧了。
    别说什么到时候可以合并,很累的。心累。

    3 、公司是否有归属感,领导是否在意。
    比如之前就出现,某同事由于懒的优化,带来副作用(不删节无用代码,项目体积直接加倍),反而被领导表扬,认为未来也许会用到。
    在这样无技术风气的公司,谁还费力优化呢?
    yanzixuan
        164
    yanzixuan  
       2020-04-16 15:04:24 +08:00
    现在工作都是面向工作编程。
    之前一个同时负责一个集群,格三差五就出问题,然后紧急排查,领导觉得这小伙干活得力。
    后来我接手之后,把集群上跑的代码理了一遍,然后集群就很少出问题。领导还觉得我太闲了。
    你品,你细品。
    purensong
        165
    purensong  
       2020-04-16 15:12:12 +08:00
    @yanzixuan 老哥,下次面试再问到我为啥从上家离职,我有话说了
    guancyxx4king
        166
    guancyxx4king  
       2020-04-16 15:20:13 +08:00
    1.给多少钱做多少事,这个你应该清楚的
    2.除非你自己能牵头打鸡血,别想着下面人主动做事情
    3.这事情不仅仅是码农问题,其实是个社会问题,很多人工作仅仅只是为了混口饭吃,至于匠心责任心什么的都是浮云,有则幸之,无则然之
    4.有心的话就把自己做好吧,喊不醒装睡的人
    skyworker
        167
    skyworker  
       2020-04-16 15:20:32 +08:00
    @yanzixuan 领导这么傻, 你还在那干? 到底谁傻? 你品,你细品。
    vitoliu
        168
    vitoliu  
       2020-04-16 15:25:22 +08:00
    @neilq 时间很充裕只存在理想的乌托邦。
    xuarongla0000
        169
    xuarongla0000  
       2020-04-16 15:29:09 +08:00
    优化个锤子
    iasuna
        170
    iasuna  
       2020-04-16 15:33:03 +08:00 via iPhone
    好像加班是理所应当 不让员工加班不是应该的吗 这种事还需要别人表扬 简直是三观不对

    想优化代码 就安排专人做啊 一遍让别人写 project 一边又要去别人优化代码 人家就是来恰饭的 让你白干你愿意吗
    g00001
        171
    g00001  
       2020-04-16 15:33:04 +08:00
    道理谁都知道,但现实很残酷,认为认真工作就一定有前途 - 只能说你太年轻。
    程序员行业就是这样,都在抱怨 996, 都在上班划水摸鱼,你想摸着良心好好做事,抱歉可能你会被整的很惨。BUG 搞的越多越讨好,这在很多公司可不是段子。如果丢了工作,你留下的代码再好有卵用?! 所以先适应办公室政冶,再去想搞好代码的事
    skyworker
        172
    skyworker  
       2020-04-16 15:35:58 +08:00
    我开始带团队的时候, 楼上的喷子们估计小学还没毕业吧?

    如果喷子们今后能明白, 努力工作不仅仅是为黑心老板打工, 更是为自己的未来努力, 这就好了.

    这个经验, 也是自己工作快 20 年, 总结出来的.
    iasuna
        173
    iasuna  
       2020-04-16 15:37:41 +08:00 via iPhone
    @neilq 我觉得你对“提高工资”的理解有问题

    “提高工资”当然不是给先有员工无故加薪 而且通过提高薪金水准 把员工逐渐替换成更高水平的人
    iasuna
        175
    iasuna  
       2020-04-16 15:41:49 +08:00 via iPhone
    @skyworker
    反是需要在前面强调自己多牛逼的发言 多半是发言者自己觉得要说的内容也没啥说服力

    在工业届不就是恰饭嘛 好好工作提高水平?别逗了 你要真想提高水平 是靠学习的 每天搬砖不能提高水平 只能修福报

    你的资历再牛 能和马云比吗 马云的发言大家都不认可 被你再说一遍 就能更有说服力了?

    屁股决定脑袋 干了这么多年管理层 忘了当年搬砖有多辛苦了吧
    glfpes
        176
    glfpes  
       2020-04-16 15:48:06 +08:00
    想优化代码就得有人推动,你是部门老大你不推动谁推动?指望下面码农利用下班时间给你优化代码?你以为优化代码不是工作?你是不是以为优化代码仅仅就是重构代码?
    skyworker
        177
    skyworker  
       2020-04-16 15:49:10 +08:00
    @iasuna 是啊, 现在当了管理层以后, 才觉得当年自己的确不够努力, 跟喷子一样, 整天只会抱怨和焦虑, 所以才没有做成马云的样子
    tankren
        178
    tankren  
       2020-04-16 15:52:45 +08:00
    v2 很多人有加班 PTSD 。。。
    zcfnc
        179
    zcfnc  
       2020-04-16 15:57:55 +08:00
    自己是做数据预测的 有的时候我写玩代码在后续调整准确率的时候会发现程序里面存在楼主说的那些可以进行小优化的问题,但是我也是有时间才会改一下
    本来就是这样,同样的程序像楼上说的那样优化也不加钱,一样能用为什么要优化呢,没需求是不会动的。反而我有的时候在优化的时候也会给自己带来不必要的麻烦
    xcstream
        180
    xcstream  
       2020-04-16 16:00:35 +08:00
    1 等出了问题再改, 不出问题改什么呢,不能靠想象。
    2 查询不够优化的话可以把测试数据库的数据量加大,开发时候就暴露问题。
    yuelang85
        181
    yuelang85  
       2020-04-16 16:04:37 +08:00
    已上线项目,运行稳定,性能 OK,新功能开发流畅,那就没有优化的意义。

    新项目,设计的时候就要做好优化,施工的时候严格细心一点。
    Wirbelwind
        182
    Wirbelwind  
       2020-04-16 16:08:11 +08:00
    招聘时候可以筛选优秀程序员,既然招进来了,那么内部肯定认为没问题,为什么还要招他呢
    zartouch
        183
    zartouch  
       2020-04-16 16:10:25 +08:00
    你说的这个事情和这个结论有什么关系?

    这个只能证明你们公司的开发不怎么样,很闲也不能把代码写好。怎么就得出别人说任务紧没时间优化不可信这个结论?
    yinzhili
        184
    yinzhili  
       2020-04-16 16:19:10 +08:00
    线上项目肯定绝大多数人是以维持稳定为主。你以为优化就只是修改代码吗?测试要不要工作量?运维要不要工作量?代码重构出现问题了谁来承担责任?这些成本加起来,是你能承受的吗?
    jabin88
        185
    jabin88  
       2020-04-16 16:19:57 +08:00
    没激励,没优化。有激励才有优化。你试试你说的问题,谁优化了,给他奖励个一两千,后面就有优化了。强制加班只会反抗,越来越糟。大部分公司都是想着高压,不考虑奖励。小学生也要表扬才有动力呀。你孩子没考好给他一棍,下次就能考第一了?
    hantsy
        186
    hantsy  
       2020-04-16 16:24:54 +08:00
    @yl666 我以前项目中也接触多个 P7,感觉都不是特别厉害。

    当然也有感觉特别差的,其中有一个奇葩,支付宝出来的,当时在上海一个创业公司做一个外包项目,导入我们的代码,居然不知道 Java apt 功能,没有配置过 IDE Annotation Processing,一堆编译错误在那里抱怨啊。面对我们写的代码无从下手,没见过 30 Maven Modules,只好让组里面最年轻的程序员(比他小十几岁吧)跟他过一遍了。日常整天嘴边说马云怎么样怎么说,有一天我感觉耳朵痒了,问他,马云和你单独说过话吗?无语,从此再也没提马云。

    (说不好听很多都是用阿里光环出来忽悠人,所以我现在特别反感那些创业公司写简介,什么 BAT 大牛坐镇,在 V 站我说过很多次,真正的阿里大牛才不会出来乱叫。当然我相信不是每个都是这样,不要对号入座。)
    skyworker
        187
    skyworker  
       2020-04-16 16:25:03 +08:00
    @yinzhili 如果你以后想做管理层的话, 教你个办法.

    如果看到当前的项目中的问题, 可以把目前的问题总接一下, 需要怎么处理, 需要那些人配合, 估计什么时间可以完成, 能带来什么效益.

    思路和步骤整理好, 向你的领导汇报. 如果领导说, 这个事情要不你主持搞一下? 千万不要决绝, 把这个事情揽下来, 并且把它做好.

    这样, 你就能在 30 岁之前, 脱离底层码农的命运, 上升至管理层了.

    当然, 如果领导 sb, 说你操那么多心干嘛. 你有两种选择:

    1. 向上级的上级汇报, 推荐自己.

    2. 准备好简历, 换公司.
    jabin88
        188
    jabin88  
       2020-04-16 16:28:49 +08:00
    上面有说的优化好可以节省自己的后期维护时间?我曾经也这样想过,但是如果项目是你自己的,可以说得过去,公司的,没有后期,公司根本就不考虑代码质量的事情,要的就是功能实现,怎样实现不考虑。要不你试试以代码质量为由拖一下工期试试?你节省出来的时间,会有更多的需求等着你,哎,还不如摸鱼吧,学点其他技术好歹还是属于自己的。
    hantsy
        189
    hantsy  
       2020-04-16 16:29:35 +08:00   ❤️ 2
    看了这么多,居然那么多人认为,优化代码是和钱有关。钱少就瞎写?你有这种观念在脑子里面,有些人工作 10 年 20 年,我也毫不夸张的说,拿钱砸死你,你也写不出一段像样的代码。

    写出来优雅,健壮的,干净的代码是程序员立命之本,跟钱没关系,这是程序员的修为和修养问题。
    encro
        190
    encro  
       2020-04-16 16:32:14 +08:00
    标题我是认可的。


    但是呢:

    读取一个用户列表,这个列表有些属性要从另外一张表读(比如所在城市),做法是:先读取列表数据成数组,然后再遍历这个数组,遍历的时候再根据城市 id,再去查询地区表,得到城市的名字。

    如果流量不大,公司后台,没必要去合并再查询,ORM 关联查出来直接上就行,虽然多了一页几十条查询,但是性能基本没有影响。

    程序员这时候偷懒是可以的。

    程序员不写注释,不写文档也是可以的。

    但是不搞清楚需求,逻辑不搞清楚,代码写得不清不楚,是不允许的。

    最后,我们没法要求别人什么,但是我们可以培训,让大家都朝一个层次看齐,提高大家的代码水平和要求,这就是管理的责任了,也是公司团队组织存在的价值和意义之一。
    Mirana
        191
    Mirana  
       2020-04-16 16:34:57 +08:00
    问题出在这个来来去去上了
    lizytalk
        192
    lizytalk  
       2020-04-16 16:38:13 +08:00
    “但实际上没一个人说,会把自己代码优化好,都是怎么实现任务了事”
    说明优化代码并不是被分配的任务,做了这件事也不能提升绩效,做了反而可能出问题背锅。
    jabin88
        193
    jabin88  
       2020-04-16 16:42:12 +08:00   ❤️ 1
    装修催工期,工人以质量为由,业主哑口无言。码农以质量为由,自己都不好意思说出口,想过为什么吗?楼主为啥不自己上,做个榜样?反而心说要加班我都得撂挑子走人。公司情况你很明白嘛,就是你说的:本来工资就低,能按时完成任务就行了,加什么班,一加班人都跑了。重点就是钱少,钱多的话,你要求加班到凌晨,一样有人在。
    jabin88
        194
    jabin88  
       2020-04-16 16:43:27 +08:00
    优化重要,你将它当需求放上班时间做,这就很正常,也没人说啥吧
    encro
        195
    encro  
       2020-04-16 16:44:32 +08:00
    我们框架做法都$user->city->name 得到城市名。
    明显现在大部分用 orm 这么简单的方法?
    团队都应该愿意用啊,
    所以我觉得你是框架没有选择好,
    还是过分吹毛求疵?
    keymao
        196
    keymao  
       2020-04-16 16:46:10 +08:00
    指责开发之前先看看待遇够不够人家这么干,人家值不值得这么干。你不能程序跑得慢的时候再想着让人家优化,为啥不一开始价码开高点,时间给多点让人家好好做。

    有些功能真的不是开发好好做,1 分钟洗 1 万斤土豆,让你洗你会怎么洗呢? 是不是直接水管子冲多少算多少?

    对于开发来说一样,时间给够才能有时间好好考虑怎么更好的实现。天天定些没用的死时间线就别怪程序烂了。
    scnace
        197
    scnace  
       2020-04-16 16:51:07 +08:00 via Android
    «重构-改善代码既有结构» ✖️
    «维护不动,跳槽来凑» ✅
    leonardyang
        198
    leonardyang  
       2020-04-16 16:54:55 +08:00
    你们这个人员架构有问题,手下开发全你一个人管,不分小组没有 master ?熟悉业务水平高的人抽出来做架构设计做代码 review 啊,指望普通开发靠自觉做优化,你在做梦呢
    kanepan19
        199
    kanepan19  
       2020-04-16 16:56:08 +08:00
    最该吐槽的就是 你们的 “架构师 ” , 这种问题就应该责问你们搭项目的或者负责人(是楼主?)
    并不是懂点技术会沟通点需求就是负责人或架构师了,是不是前期随便搭个项目就上线了,
    普通员工就那么点素质, 你要求不了那么多,
    合理的架构, 加上开发流程,才会避免楼主说的大多数问题。
    l00t
        200
    l00t  
       2020-04-16 16:56:29 +08:00
    就是水平问题吧。

    咋叫优化好呢?你的理解和写的人的理解可能是不一样的。你认为这样不算优化好了,人家这样就是优化好了……

    写代码,一次成型最佳,上线后改来改去反而容易出事。你要觉得他们一次成型的质量太差,那在 code review 阶段多花点力气,大家讨论出一个“好”的标准来,挡住“不好”的写法。
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2740 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:03 · PVG 08:03 · LAX 17:03 · JFK 20:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.