V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
CrazyMoon
V2EX  ›  问与答

老同事不让重构代码怎么破?

  •  
  •   CrazyMoon · 2020-04-23 15:47:17 +08:00 · 4991 次点击
    这是一个创建于 1710 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近组里开始做代码互审,同事审到偶修改的一个程序,有意见。意见是偶除了修改需求要求的内容之外,还做了一些其它修改。

    偶的确改了一些其它内容,这因为偶发现程序里面的一些 hard code 比较难读(比如 type = 'P', type = 'A'之类的),于是创建了几个常量,以便看代码的人通过常量名理解这些编码的意义。

    偶觉得这样改很好,但同事不同意,她说 1)改的地方太多,后人比较版本的时候,会对修改内容感到很困惑。2)改了需求外的东西,可能会导致意料外的 bug 。

    同事资格比较老,且一向比较看重规则。偶年轻而且又比较散漫,没能坚持自己的观点,最后还是把这些东西又改回去了。不过偶依然觉得自己原本的做法没错。。。要怎么办呢?
    40 条回复    2020-04-25 13:42:28 +08:00
    wysnylc
        1
    wysnylc  
       2020-04-23 15:48:22 +08:00   ❤️ 3
    偶?现在是 2010 年?
    thefack
        2
    thefack  
       2020-04-23 15:50:16 +08:00   ❤️ 1
    信老同事的
    AngryPanda
        3
    AngryPanda  
       2020-04-23 15:51:02 +08:00   ❤️ 7
    她是女人,听她的
    a719114136
        4
    a719114136  
       2020-04-23 15:51:28 +08:00
    你没错,他也没错。就一风格问题,没那么多可纠结的,既然他资格老就听他的呗。

    等你资格老了就你说的算了
    th00000
        5
    th00000  
       2020-04-23 15:52:24 +08:00
    信老同事的,
    觉得不爽, 后台再提交一个 pull request 请原本开发这个地方的同事帮你 review 一下, 确定你没有将老代码改出 bug, 再把代码合进去.
    imn1
        6
    imn1  
       2020-04-23 15:53:27 +08:00
    你的项目,你对
    公司的项目,她对,尤其是她说的两点,注意并不是说你改错了
    wutiantong
        7
    wutiantong  
       2020-04-23 15:53:53 +08:00
    又是标题党
    NonClockworkChen
        8
    NonClockworkChen  
       2020-04-23 15:54:44 +08:00
    改了,荣誉算你的,出了事,你赔钱离职即可。
    就怕你担不起责,想起了几天前 800w 损失的运维。
    blindie
        9
    blindie  
       2020-04-23 16:01:04 +08:00 via Android
    就让你们看不懂 她这个项目才稳稳归她 own 饭碗捧的牢。其他修改感到困惑就抽离这个修改单独 commit 并完善注释文档 意料外的 bug 没测试的吗?总而言之就是让你别碰这些 那你就理解别碰就好了
    opengps
        10
    opengps  
       2020-04-23 16:03:19 +08:00   ❤️ 1
    你是做技术的,但是眼里不要只有技术。改动他的代码,及时你在技术上得满分,但在这件事的处理上也未必能及格。指出他人代码不足会让人感觉不爽,自然也就会不顺从你的意思。

    另外,少改动线上代码,这本身也是个非常安全的做法
    yikyo
        11
    yikyo  
       2020-04-23 16:05:28 +08:00
    你的错,你在当前任务中做了无关此次任务的工作。你要重构可以,单独提任务,测试,上线。想法是好的,做法是错的。
    zhuawadao
        12
    zhuawadao  
       2020-04-23 16:06:30 +08:00
    加注释
    littleylv
        13
    littleylv  
       2020-04-23 16:16:33 +08:00   ❤️ 1
    听她的。

    你这偶,仿佛让我回到了 200x 年
    ccoming
        14
    ccoming  
       2020-04-23 16:16:47 +08:00
    如无必要,勿重构代码。
    crazybinggan
        15
    crazybinggan  
       2020-04-23 16:18:09 +08:00   ❤️ 1
    听 MM 的。
    GG,你也网上冲浪...
    hpashencedany1
        16
    hpashencedany1  
       2020-04-23 16:18:22 +08:00
    大胆一点, 就说除了问题偶负责
    pan176
        17
    pan176  
       2020-04-23 16:19:47 +08:00
    听偶的
    glfpes
        18
    glfpes  
       2020-04-23 16:21:28 +08:00
    这个‘偶’,有 15 年前内味了
    lneoi
        19
    lneoi  
       2020-04-23 16:22:36 +08:00
    这也没不让你改吧,改了需求以外的东西以后不好复查,可以另外提一个
    xuarongla0000
        20
    xuarongla0000  
       2020-04-23 16:22:48 +08:00
    做多错多
    Orenoid
        21
    Orenoid  
       2020-04-23 16:24:12 +08:00
    还没到维护不了的地步,重构又还有阻力,改出问题还得你担责,风险和收益完全不成正比。
    baiyi
        22
    baiyi  
       2020-04-23 16:25:16 +08:00
    要去争取

    “业务部门会认为系统的正常工作很重要。软件开发人员常常也采取了这种态度。但这种态度是错误的。”
    “请记住,你作为一名软件开发人员。软件的可维护性需要由你来保护,这是你角色的一部分,也是你职责中不可缺少的一部分。”
    “请记住:如果忽视软件架构的价值,系统将会变得越来越难以维护,终会有一天。系统将会变得再也无法修改。如果系统变成这个样子,那么说明你没有尽到自己的责任。”

    以上内容节选自《 Clean Architecture 》,我觉得挺有道理的
    dandycheung
        23
    dandycheung  
       2020-04-23 16:30:26 +08:00 via iPhone
    做对的事,等着被开除。我支持你。
    murmur
        24
    murmur  
       2020-04-23 16:34:51 +08:00
    你同事是对的,无论你再牛逼,你一定要考虑上线后出 bug 谁背锅,谁给你做全面测试
    老的系统出了 bug 属于无法维护的范畴,重启一下就过去了,做的再烂的系统也是久经风雨,就算是 bug 我都知道什么时候触发,针对性回避就可以
    你重构后属于你开发的问题,你要背这个黑锅的
    我们集团 OA 是 0X 年开发的,domino (使用 vb 语言开发),维护专门有人负责出问题重启,都坚持到现在,前端代码还是 js 和 vbs 混写( IE6 年代的数组可以像 vb 一样用圆括号访问,比如 arr(0))
    有什么是必须维护不可的
    murmur
        25
    murmur  
       2020-04-23 16:36:14 +08:00
    宁可推倒绝不重构,推倒属于新项目研发性质,可以双轨运行,出了最严重的问题大不了停掉就是老的还能用
    rapperx2
        26
    rapperx2  
       2020-04-23 16:36:48 +08:00   ❤️ 2
    偶真是精神洗脑的字,我读完 脑海里全是偶!!!!!!!!。好想 Block 啊!!!!!!!!!
    goodryb
        27
    goodryb  
       2020-04-23 17:10:37 +08:00
    你是嫌工作量不够还是鱼摸着不舒服,吃力不讨好的事情还想不通
    balaWgc
        28
    balaWgc  
       2020-04-23 17:15:58 +08:00   ❤️ 1
    倒,还有这种事啊,听偶的,偶支持你
    otakustay
        29
    otakustay  
       2020-04-23 18:08:31 +08:00
    我觉得他说的 2 不合理,但 1 是对的,不如重构单独一个 commit,用 message 详细说明改了什么为什么改,后人也能 blame 看到
    essicaj
        30
    essicaj  
       2020-04-23 18:10:15 +08:00
    不要老想着改别人的代码,到时候出问题都不知道该找你还是找她。
    zooo
        31
    zooo  
       2020-04-23 18:45:45 +08:00
    那就等你变成老员工
    AstroProfundis
        32
    AstroProfundis  
       2020-04-23 18:50:47 +08:00
    > 除了修改需求要求的内容之外,还做了一些其它修改
    > 改的地方太多,后人比较版本的时候,会对修改内容感到很困惑
    这是对的,需求没有要求你做,你就不要放在这个需求的实现里面,另外提一个需求来改历史代码里面不合理的地方

    > 改了需求外的东西,可能会导致意料外的 bug
    这个就看你们有没有足够的测试资源了
    raymanr
        33
    raymanr  
       2020-04-23 19:16:23 +08:00
    没事儿别搞啥重构...

    我自己的我都不想动
    akira
        34
    akira  
       2020-04-23 22:00:11 +08:00
    一次提交做一个事情
    sunulin
        35
    sunulin  
       2020-04-23 23:07:44 +08:00 via Android
    这类似帖子感觉过几天冒出一个来
    Biwood
        36
    Biwood  
       2020-04-24 00:28:14 +08:00
    如果仅仅因为局部代码看着不顺眼,想通过重构一小部分代码来解决问题,那还是趁早放弃。
    如果是想做整个项目的代码翻新,可以做渐进式的局部重写( rewrite ),而不是重构( refactor ),当然有这几个前提:

    1. 项目已经做好了模块解耦,即你改动一个模块的时候不影响全局
    2. 你有足够的技术自信
    3. 充足的开发时间
    4. 保证重写方案可以进行到底,而不是最终只做了一半

    尽量避免新旧代码大量混合,否则对后来的维护者来说根本就是灾难,而且维护的人越来越多,代码风格就越混乱,最终整个项目就是一团糟。
    当然,对于一开始规定了严格代码风格和代码质量评审的团队根本不应该存在这些问题。
    geekboy
        37
    geekboy  
       2020-04-24 08:09:16 +08:00
    狐吧月神?
    6oML852dJf9Kn2l7
        38
    6oML852dJf9Kn2l7  
       2020-04-24 09:59:38 +08:00
    我看见这个 [偶] 吐了!!!!!
    buffzty
        39
    buffzty  
       2020-04-24 10:13:02 +08:00
    你提出的问题是对的,但是改老代码是不对的. 你可以跟他说以后新写的项目禁止使用字面量 全部使用有意义的常量.
    老项目真的是能不动就不动. 而且人家说不定 知道这里错了,只是不想改而已
    eryueyu
        40
    eryueyu  
       2020-04-25 13:42:28 +08:00 via iPhone
    出了问题你负全责的话,可以改
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2543 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:27 · PVG 19:27 · LAX 03:27 · JFK 06:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.