如何平衡开发效率和代码优雅性? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
txzh007
V2EX    程序员

如何平衡开发效率和代码优雅性?

  •  
      txzh007 2024-07-09 11:08:45 +08:00 3434 次点击
    这是一个创建于 467 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这里说优雅性只是一个比喻.

    下面是一个场景,请问大家是如何面对的?

    得到一个新需求,评估时间不长,逻辑也很简单,但是和之前代码有关联,后续也有可能会复用这段逻辑

    方式 1. 用最快速的方法解决,然后该干嘛干嘛, 屎山+1

    方式 2. 对老代码进行重构,解耦,优化逻辑,代价 时间成本上升,在评估时间内可能无法完成
    28 条回复    2024-07-12 18:14:29 +08:00
    hidder
        1
    hidder  
       2024-07-09 11:20:41 +08:00
    1.多摸会
    2.多找点其他方面的事去做
    shadowyue
        2
    shadowyue  
       2024-07-09 11:23:11 +08:00
    个人追求+时间+待遇水平,综合考量
    tool2dx
        3
    tool2dx  
       2024-07-09 11:25:46 +08:00
    评估时间 x 2, 尽可能在项目周期内完成。
    LikeMurphy
        4
    LikeMurphy  
       2024-07-09 11:26:57 +08:00
    评估时间内完成任务放第一位
    wu00
        5
    wu00  
       2024-07-09 11:50:11 +08:00
    项目前期方式 2 ,被各种质疑,经常延期
    项目后期方式 1 ,需求越来越密集,节奏越来越快,屎山速度成指数级增长
    Cruzz
        6
    Cruzz  
       2024-07-09 11:53:56 +08:00
    做新需求有工作量,改屎山自己一堆工作量,再领导那没有工作量,是太闲了么?上班不就是为了赚钱么,别扯有的没得,个人追求可以自己搞点开源项目,放简历上还好看。有时间还不如摸摸鱼呢。
    estk
        7
    estk  
       2024-07-09 12:05:42 +08:00 via iPhone
    看老板,有些老板不懂代码,能实现就行,考核指标不含代码质量,那就策略 1
    有的老板懂技术,本身对代码质量要求高,考核指标包含代码质量,那就策略 2
    crz
        8
    crz  
       2024-07-09 12:41:39 +08:00
    想法是方式 1+方式 2 ,优先可用,然后适量整理调优
    现实是方式 1 ,方式 1 ,。。。没有足够的资源方式 2
    SuperManNoPain
        9
    SuperManNoPain  
       2024-07-09 13:08:42 +08:00
    一般来说是看后面这东西是我是我继续负责,是的话一般就代码质量写好一点,毕竟有坑的话还得自己填
    LoNeZ
        10
    LoNeZ  
       2024-07-09 13:37:59 +08:00
    shi 山很多来源于需求不明确..
    wwd179
        11
    wwd179  
       2024-07-09 14:05:29 +08:00   1
    同意。屎山很多时候来源于需求不明确。
    有时候一个系统经过多次迭代开发后,和设计初衷都不一样了。
    dudubaba
        12
    dudubaba  
       2024-07-09 16:47:26 +08:00
    你离职后,你重构过 N 遍自认为优雅的不能再优雅的代码,再下一任维护者眼里就是坨便便。所以跟自己和解,在自己觉得优雅范围内不影响效率的情况下编码,会少很多烦恼事。
    povsister
        13
    povsister  
       2024-07-09 16:51:22 +08:00
    看待遇,给多少钱干多少事。
    看环境,同事普遍高水平就严要求。
    看老板,如果你意见和老板不一致,那老板说得对。
    zhazi
        14
    zhazi  
       2024-07-09 16:56:05 +08:00   1
    你这个“有可能“有多大可能,有很多时候你认为的有可能只是你认为的。
    在没有明确需求的情况下去为未来做一些事更容易产生屎山。
    你总想的那么多,别人看你代码就像屎山。
    SoviaPhilo
        15
    SoviaPhilo  
       2024-07-09 17:01:46 +08:00   1
    成年人要明白一个道理, 就是谁承担最大的后果, 就应该承担最大的责任。

    你们公司有正经组织工程师培训什么叫优雅吗?
    你们公司有愿意为了更优雅的代码付出更多时间成本吗?

    没有?又不是你的项目, 老板都不急你急什么
    ychost
        16
    ychost  
       2024-07-09 17:30:26 +08:00
    大部分是 1 ,当遇到产品大改就会顺便把 2 做了
    pkoukk
        17
    pkoukk  
       2024-07-09 17:33:35 +08:00
    用 AI 写,几乎不存在 2 了
    pkoukk
        18
    pkoukk  
       2024-07-09 17:34:01 +08:00
    @pkoukk 写错了,几乎不存在 1 了
    xueling
        19
    xueling  
       2024-07-09 17:48:50 +08:00   3
    1 、原来的代码暂时不动,通过简单修改包路径防止互相交叉,新写的代码完全按新逻辑开发,要充分考虑兼容老代码逻辑,保证按时完成;
    2 、陆续按模块迁移老逻辑的代码到新模块中,这个过程的进度完全根据自己可支配时间决定,然后陆续删除老逻辑;
    3 、工作汇报、周报中尽量避免用 “代码逻辑优化、重构”这种模糊字眼,要不然就算你做了再多别人也会认为你在摸鱼。
    4 、评估排期时,实际所需时间和评估时间,要尽量控制在 2:3 以内,这样你剩余的时间可以充分进行想要去做的优化工作;
    5 、设计数据库字段、表结构、接口协议时要充分思考,因为这些地方设计的不好,上线后再改可就麻烦了。
    Younow
        20
    Younow  
       2024-07-09 17:51:53 +08:00
    让自己变强
    sampeng
        21
    sampeng  
       2024-07-09 19:35:23 +08:00
    其实。。除了加班。。无解
    txzh007
        22
    txzh007  
    OP
       2024-07-09 19:36:24 +08:00
    @zhazi 突然顿悟了 hah
    night98
        23
    night98  
       2024-07-10 01:49:14 +08:00
    公司不考核这方面,就是单纯扯淡。
    其次很重要的一点,是必须团队统一规范和风格,否则说这些就是扯淡

    综合来看,国内能做到以上两条的公司为 0
    因此讲究优雅实质上没啥意义,纯个人暗爽而已

    我选择直接往上拉屎
    新开的就稍微讲究点
    Tenlearn
        24
    Tenlearn  
       2024-07-10 04:04:50 +08:00 via iPhone
    做给谁看?你有那功夫实打实的压缩了时间老板看在眼里,你加了两天工时,老板会打开 ide 看你的代码,然后发现你不仅写的漂亮还优化了老代码?可能吗!
    1000copy
        25
    1000copy  
       2024-07-10 06:01:38 +08:00
    @xueling 真是实践者的建议,有实践有理论。这样的好内容不多,v2 很多时候都是虚无主义的天下。
    1000copy
        26
    1000copy  
       2024-07-10 06:02:50 +08:00
    赞。

    ---
    1 、原来的代码暂时不动,通过简单修改包路径防止互相交叉,新写的代码完全按新逻辑开发,要充分考虑兼容老代码逻辑,保证按时完成;
    2 、陆续按模块迁移老逻辑的代码到新模块中,这个过程的进度完全根据自己可支配时间决定,然后陆续删除老逻辑;
    3 、工作汇报、周报中尽量避免用 “代码逻辑优化、重构”这种模糊字眼,要不然就算你做了再多别人也会认为你在摸鱼。
    4 、评估排期时,实际所需时间和评估时间,要尽量控制在 2:3 以内,这样你剩余的时间可以充分进行想要去做的优化工作;
    5 、设计数据库字段、表结构、接口协议时要充分思考,因为这些地方设计的不好,上线后再改可就麻烦了。
    lizy0329
        27
    lizy0329  
       2024-07-10 11:52:27 +08:00
    没事你动老代码干嘛?如果你老板是你爸爸,可以选择方法 2
    shellus
        28
    shellus  
       2024-07-12 18:14:29 +08:00
    依次辩驳一下前面发言:
    1. 下一任维护者眼里就是坨便便
    说明你从没看过好代码,所以任何你看不懂的代码你都觉得是坨便便,这只是你个人的问题,并不是普遍情况,好的代码很多,就像艺术品,可惜你没见过或者见到了也认不出。
    好的代码并不是说设计模式用的多,代码行数少,而是它精准的满足了需求,不多不少,也不会因为炫技或者盲目满足某些设计规范而增加代码复杂度。

    2. 给多少钱干多少事
    这很好解答,你应该找愿意为你能力买单的工作,而不是有多少钱干多少事,别告诉我你的能力已经没人能出的起对应价格了,也许你应该重新自我评估。

    3. 很多来源于需求不明确
    需求从来都是不断变化的呀,变化也是需求的一部分。这是我们本来就应该努力做好的工作。

    4. 这东西是我继续负责的话代码质量写好一点
    这和外地人在街上吐痰拉屎有什么区别?不是我家我就糟蹋,我就没素质,因为环境好了我也无法享受到成果?这是一种严重的误解。
    人生从来就是过程而不是结果,就像你吐了一口痰,走几步你就会踩到一坨屎,因为前面一个人也是和你一样想的。
    另一点误解就是,你其实很难选择写出“好代码”,你只能在写出“符合我水平代码”和“糟糕的代码”之间选择。

    5. 老板懂的话代码质量就写高一点
    老兄,你该换工作了,如果老板甚至都不知道你的工作成果的质量水平,凭什么认为他会给出合适的待遇呢?
    如果他给多了而不是给少了,那么说明他连基础的市场买卖都没搞懂,项目也不会在市场上脱颖而出,简而言之就是没有未来。
    另一方面讲,如果给多了,为什么你没有点感恩的心态,努力将事情做好,匡扶汉室于危难?而是一边拿着有愧的待遇,一边还做着不负责任的事情?

    6. 个人追求可以自己搞点开源项目
    工作对于大部分人来说就是人生中最重要的事情,如果可以,最好将全部的精力和时间投入其中。
    除非你已经摸到了职业生涯的天花板,哦~ 抱歉,我不小心摸到了你的痛处。

    7. 评估时间内完成任务放第一位
    这是正确的,但用一个正确的观点来论证另一个问题是不逻辑的。
    在保证完成任务的前提下,剩余的空间才是讨论项目完成质量的空间。

    ---

    最后,我很痛心,看到这么多负面的关于项目质量的发言,使我对这个行业的未来感到担忧,也对你们可能被 AI 或者其他什么东西取代而失去赖以糊口的工作产生担忧。
    我希望行业中能出现更多的独立思考和发言,更多的对于技术的热爱和对于工作的责任感。
    少一些负面情绪,多一些积极的态度,这样我们的行业才会有更好的未来。
    赶日超美,加油!希望我们行业的后辈不再说出那句“国外的软件更发达”,就像我们现在已经不再说“国外的汽车更好”一样。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2560 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 07:49 PVG 15:49 LAX 00:49 JFK 03:49
    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