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

如果代码没有 bug、也没有性能问题,是否还会为了其他目标来优化重构?

  •  
  •   d119 · 168 天前 · 3726 次点击
    这是一个创建于 168 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,如果代码没有 bug ,也没有性能问题,是否为了追求代码的优雅、格式、项目结构的优化而去调整重构代码呢?

    53 条回复    2022-10-16 00:28:48 +08:00
    frank1256
        1
    frank1256  
       168 天前   ❤️ 1
    会,总有人不喜欢屎的味道(闲下来的时候)
    zwdsix
        2
    zwdsix  
       168 天前   ❤️ 3
    我就说一句,程序员其实往往不懂自己说的“优雅”是什么意思。甚至不知道“重构”的定义。
    lmshl
        3
    lmshl  
       168 天前   ❤️ 4
    我做过,算是提升可读性吧。
    把整个系统的异步模型从 Future 迁移到纯函数的 IO Monad ,重构过程中发现了一堆小 Bug ,只是运气好没走到这个分支。以及重构完了还发现访问量高于半年前但 CPU 降到原来 1/10 的样子,也是重构的小惊喜。
    kaz10025
        4
    kaz10025  
       168 天前
    小项目调整无所谓 屎山你改的动?
    panlatent
        5
    panlatent  
       168 天前
    自己的会。公司的以前也许会,现在不会。
    s524256521
        6
    s524256521  
       168 天前 via Android
    个人猜测,优化重构的根本原因是客户需求在不断升级,代码本身有没有问题不是关键,所以很多时候为了增强竞争力,会把没有 bug 和性能问题的代码重构上云,或者优化算法来降低成本。
    wr410
        7
    wr410  
       168 天前
    不会,这是一个大工程,牵涉人员众多,不是你自己的东西想改就能改的
    god7d
        8
    god7d  
       168 天前
    不会,能跑就行,直到有一天实在是无法维护了才会考虑重构
    darkengine
        9
    darkengine  
       168 天前
    会为了其他目标(可读性,可维护性)局部优化代码。至于大范围重构,最好要有充分的理由和评估。
    xianyv
        10
    xianyv  
       168 天前
    自己写的代码还有点动力,别人交到自己手上的没啥兴趣给重构
    god7d
        11
    god7d  
       168 天前   ❤️ 1
    @s524256521 是的,一般代码有 bug 或者是写的不优雅很少会成为进行重构的动力,一般都是项目的不断迭代更新,原先的架构无法再加入新的功能或适应现有的业务模式,才会被迫进行重构。一般有经验的架构师会早早的预测到这类情况的到来,所在在项目之初就会在架构上做出预先设计。很多公司的软件 leader ,会有第一版“先完成再说,等后面用不了了大不了重构嘛”的想法,他们的重构频率会相对较快,但是这种一种错误想法,本质上也是架构师经验不足的表现。因为频繁重构严重加大开发、测试人员的工作量,也使得软件的稳定性下降,同时也可能会增加客户的学习成本(如果重构引起客户察觉的话)。
    c8c
        12
    c8c  
       168 天前
    看情况吧。
    举例:
    如果扩展性不够好,而业务量增加,需要扩展,就需要重构啊。
    如果 Ops 很重,也会重构,简单结构,减少 Ops 。
    d119
        13
    d119  
    OP
       168 天前
    我初入门的时候,带我的一个前辈,就花了很多时间在重构上,那时候还不流行微服务这种模式,是面向对象开发模式的的中大型项目,我很清楚的记得,他每隔一段时间,(并不是一定闲下来的时候),他就重构(当然在那种项目里面,重构是要花很多时间的,因为重构是逐渐逐渐的,不可能一下就优化重构到很好),他重构到了什么地步呢,我也清除记得:一个不会写代码的项目经理,经常站在他旁边看,而且说,看他的代码跟看书一样,很明白这段代码是什么作用和意义。
    garlics
        14
    garlics  
       168 天前
    感觉大规模的重构最主要的目的还是空降的领导想控制代码
    ericgui
        15
    ericgui  
       168 天前
    当然 TMD 要重构了,你都不知道,一个 react class component , 在我老东家, 能有 1300 行,我以为这就够屎了,新东家 1800 行,怎么样?

    不是没有 bug ,而是你没测出来罢了
    janus77
        16
    janus77  
       168 天前
    kpi
    westoy
        17
    westoy  
       168 天前
    没 BUG 和性能问题的重构一下

    可能就有了.........
    lujiaosama
        18
    lujiaosama  
       168 天前
    不是技术驱动型的公司有哪个天天给你重构,能跑起来的代码就算再烂也是经过生产环境检验的。重构还得把之前跑过的流程全部来一遍,哪里只是改改代码的事情。
    infun
        19
    infun  
       168 天前
    会的,我之前对接的开发团队,为了可读性和扩展会做比较多的重构
    和他们合作比较愉快
    alen0206
        20
    alen0206  
       168 天前
    自己不接手的一般不改
    d119
        21
    d119  
    OP
       168 天前
    如果是为了提高可读性作为目的,那起码代码需要有其他人读吧,如果就只是自己维护,别人根本看都不看,或者没机会看,你还重构吗
    dvsilch
        22
    dvsilch  
       167 天前
    @d119 我个人倒是更愿意重构自己的代码...因为别人的业务代码,在不清楚具体业务逻辑的情况下,很容易牵一发而动全身。
    但是自己的代码会有自己看得懂的注释,即使放了一段时间再回头看也能很快读懂当时的思路,并且结合当前的理解写出语法更优雅、性能更好的代码。
    zwdsix
        23
    zwdsix  
       167 天前
    重写就重写吧,重构啥呀。这楼里有人能说出重构名录里的任意一个重构手法叫什么?
    zwdsix
        24
    zwdsix  
       167 天前
    所以他们总是会说“重构”这事“很费时”,“没时间做”,“引入更多 bug”。请问重构和 bug 、性能有啥必然关系?
    fox0001
        25
    fox0001  
       167 天前 via Android
    自己的代码,会。公司的项目,一般就算了,除非有要求。重构完还得重新测试、改 bug ,一堆麻烦事。
    kujio
        26
    kujio  
       167 天前
    有,不断尝试用新技术替代老技术,然后根据新技术尝试写一个简化版的
    xuanbg
        27
    xuanbg  
       167 天前
    现在不会。因为现在只可能需要升级,绝对不需要重构。
    aguesuka
        28
    aguesuka  
       167 天前
    @zwdsix rewriting 和 refactoring 和 <<Refactoring>> 完全是三回事
    shenlanAZ
        29
    shenlanAZ  
       167 天前
    不会,可能会把更好的设计思想来做下个项目。

    没有性能问题优化重构和浪费时间没区别了。
    296727
        30
    296727  
       167 天前
    不会,做的好了不一定有奖励,做的差了一定有批评
    andyJado
        31
    andyJado  
       167 天前
    @zwdsix
    重写可以不重构, 重构必然要写新的.
    karott7
        32
    karott7  
       167 天前
    小项目会,大项目就算了
    aonshuy
        33
    aonshuy  
       167 天前
    重构是为了引入 bug 和性能问题吗
    lcbp
        34
    lcbp  
       167 天前
    无情重构
    IsaacYoung
        35
    IsaacYoung  
       167 天前
    不会
    sadfQED2
        36
    sadfQED2  
       167 天前 via Android
    编程第一原则:只要项目还能跑,那就不要动他
    编程第二原则:如果项目烂得没法跑了,那你人就赶紧跑
    mazai
        37
    mazai  
       167 天前
    会,代码的第一要务就是保证看你代码的人能看懂
    xiangchen2011
        38
    xiangchen2011  
       167 天前
    会,增加扩展性和可读性
    dolphintwo
        39
    dolphintwo  
       167 天前
    面向工资编程,哪来的重构,代码和程序员有一个能跑就行了
    golangLover
        40
    golangLover  
       167 天前 via Android
    @lmshl 你好像是 scala 大神。对你很有印象
    lmshl
        41
    lmshl  
       167 天前   ❤️ 1
    @golangLover 😊
    https://www.bilibili.com/video/BV1Qa4y1L7dj
    3:07:00 开始是我,就是从 Future 迁移 IO Monad 后做的社区分享。
    RicardoY
        42
    RicardoY  
       167 天前
    重构这个词被滥用的太多了,可以去翻翻书,上面有清晰的定义和什么时候应该重构的指南。重构不是为了解决程序 Bug 和提升性能...
    RicardoY
        43
    RicardoY  
       167 天前
    楼上这么多人,对重构的理解好像跟 Martin Fowler 都不太一样...
    zhuweiyou
        44
    zhuweiyou  
       167 天前
    别人写的,不会.
    自己写的,会.
    golangLover
        45
    golangLover  
       167 天前
    @lmshl 感谢你的分享!
    kongkongye
        46
    kongkongye  
       167 天前 via iPhone
    个人的开源或长期维护项目就会重构,为了后面维护与扩展更容易,但公司的项目,又不是一个人的代码,就没有重构的想法,而且你想重构上级也不支持,重构了还是那个功能,并没有效益的提升,重构不好出 bug 还要你背锅,不重构老是出各种 bug 问题反而能体现你的价值,造成一直很忙的假象。没办法,上级跟更上级领导不懂技术只能这样,环境如此。
    kkbblzq
        47
    kkbblzq  
       167 天前
    看情况,如果需求刚好改到了相关代码,我觉得需要重构,在影响范围 /时间花费可控在一定范围内的情况下我会做小规模的重构;影响较大的,工期影响比较多的,根据当时需求量和测试资源,有空余的话我会去争取 PM 支持,实在没操作空间的话那就先挂起;

    重构更多的是提供可读性、可维护性、可扩展性等等,如果是自己参与长期维护的代码,合理的重构是可以降低不少维护成本的,也可以提高自己对项目代码的掌控性;

    说实话,真堆屎山到堆不上去再来搞,那时候只能追求:代码和人有一个能跑就行了😂
    yxzblue
        48
    yxzblue  
       167 天前
    没有 bug 和性能问题,就不要重构,甚至都不用改,改好了不会多你一毛钱,改烂了擦屁股擦不完
    zwdsix
        49
    zwdsix  
       167 天前   ❤️ 1
    @aguesuka 来,你来详细展开。我看你能说出啥。
    iceheart
        50
    iceheart  
       167 天前 via Android
    测试同意么?
    justin2018
        51
    justin2018  
       167 天前
    重构 怎么说咧 屎山代码不重构可以正常跑 重构后各种 Bug

    年轻的时候 不懂事 见到屎山代码 就想重构 结果重构后 业务出问题了~~~

    现在转眼看 自己也代码也堆成山了 正常运行了好几年

    又不是不能跑 重构自己给自己找事儿做
    techon
        52
    techon  
       166 天前
    没性能问题是暂时的,没 bug ?怎么可能! 除非是 helloword 。。。
    secondwtq
        53
    secondwtq  
       166 天前
    也可能是为了搞千年大计,减少未来可能的 bug ...
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   3562 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 04:08 · PVG 12:08 · LAX 21:08 · JFK 00:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.