V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MadSix
V2EX  ›  职场话题

同事防御性编程影响项目怎么办

  •  1
     
  •   MadSix · 2024-04-17 09:51:13 +08:00 · 20391 次点击
    这是一个创建于 373 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景如下: 我们有多个组,我带组 1. 同事 A 不在我的组,属于组 2. 现在同事 A 正在开发一个新项目,他是目前的主力,我安排人配合他一起完成,但目前开发内容上交集很少,拆的比较开。

    问题如下: 1.目前已经明确,这个项目开发完之后,全权移交给我组负责后续开发维护,我是第一责任人。 2.最近组里兄弟跟我反馈,这哥们的代码,太过防御性了点,代码几乎是不可维护的。干什么都是梭哈,除了他自己没人看得懂写的是什么。我稍微看了一眼,想在他的代码上加功能我看了都满头大汗,无从下手。 3.这个系统其实有个前身,后来他介入之后,也是这套打法。到后来成功的没办法继续维护了,只能推倒重做一套,继续放任,就是历史重演。

    我很想提这个问题,但他又不归我管。他防御性编程其实我不是很在意,别人自有维护饭碗的方式,但是影响到我后续开发了,我就很难受。

    现在最困难的是: 这个项目并不是由组 2 的组长带的,而是一个技术老大亲自带的,所以找组 2 组长沟通没用。 至于这个技术老大。emm 说实话不太管事,只管下任务,也不关心代码质量和项目细节,所以跟他反馈等于没说。平时开发告诉他做完了就行,代码 review 他都不做,要不然也不能让这哥们毫无心里负担得这么干。奈何技术老大位高权重资历深厚,咱们也没什么办法。

    我现在很想跟上面反馈一下这个问题,但是我这种跨管辖范围的做法总是不太好,而且也不知道提了有没有用。难道就这么把这口屎吃下来不成。

    V 友们给出出主意。

    第 1 条附言  ·  2024-04-17 10:53:40 +08:00
    感觉大家关注的焦点变成了
    “防御性编程”的概念用的不对。
    谢谢各位的科普,这东西什么意思我是懂的,确实如某一层朋友所说,这是我“爱重新定义老词语”的臭毛病。
    接受批评。
    大家就先暂时不要关注字词解释了,我下次一定改
    第 2 条附言  ·  361 天前
    感谢大家的建议和批评
    最终还是决定从我这拉一个人出来把他换过来,以后打算安排他专职维护这一块了
    123 条回复    2024-04-18 15:59:31 +08:00
    1  2  
    MillaMaxwell
        1
    MillaMaxwell  
       2024-04-17 09:54:09 +08:00   ❤️ 9
    只能在他的代码旁边再拉一坨大的了
    IMelon
        2
    IMelon  
       2024-04-17 09:55:24 +08:00
    防御性的代码看起来是什么样的?
    yangzzzzzz
        3
    yangzzzzzz  
       2024-04-17 09:55:35 +08:00
    直接和他明说啊 不改像上面汇报呗。就说以后代码我这边维护不了 别怪我了。
    MadSix
        4
    MadSix  
    OP
       2024-04-17 09:55:56 +08:00
    @miraumr 拉完还是我自己擦啊,后续开发维护我是第一责任人
    ltyj2003
        5
    ltyj2003  
       2024-04-17 09:57:13 +08:00 via Android
    让他提供开发文档,对程序代码进行说明。
    kera0a
        6
    kera0a  
       2024-04-17 09:57:36 +08:00 via iPhone   ❤️ 53
    能不能把这哥们请来 V 站开个讲座?
    MadSix
        7
    MadSix  
    OP
       2024-04-17 09:59:00 +08:00
    @IMelon 代码不方便贴
    怎么说呢,基本就是
    1.跟已有项目开发习惯相背,大家什么框架或者方法用的最多,他就不用什么。大家什么写法最多,就不写什么。
    2.不拆分不抽象,逻辑一把梭哈,强强耦合,要改个功能得瞻前顾后,牵一发动全身
    3.变量名+没注释,懂得都懂
    emSaVya
        8
    emSaVya  
       2024-04-17 09:59:37 +08:00
    代码重构列入 kpi 安排工时呗。这不是常规方案吗?
    qinfengge
        9
    qinfengge  
       2024-04-17 10:00:44 +08:00
    @MadSix #7 能这么写那该说不说也挺牛逼的
    MadSix
        10
    MadSix  
    OP
       2024-04-17 10:01:53 +08:00
    @emSaVya 他的 KPI 不归我定
    至于我自己安排人重构。。。这口屎吃的风险太大了,不是他自己来,重构一下总担心出问题。
    这哥们最骚的操作是好多判断他交给前端去做,他就在万千返回值中给几个意义不明的 0123.
    MrYELiex
        11
    MrYELiex  
       2024-04-17 10:02:27 +08:00
    可能单纯是菜 或者觉得不配用脑子想怎么抽象 写完就完事了
    uiosun
        12
    uiosun  
       2024-04-17 10:04:05 +08:00   ❤️ 4
    @IMelon 举个例子:

    OOP 的话,一个 class 三千多行甚至更多,我见过两万多行的(纯代码,不带空行的计算),没有一行注释,message 缩写成 msg 都是奇迹,往往会写成 m 或者 xx (消息的拼音打头)。

    这个 m 在不同的行效果是不同的,这会儿是 message ,过几百行是 minute ,等下又变成了 meter 。

    里面一部分方法有,一部分方法没有:事务、参数校验、直接抛异常、抛错误代码等等等,不一而足,全凭当时的心情。

    说好听点叫防御性代码,说难听点他自己都不一定维护的起来……好代码都长得类似,这种代码那就各有各的风味了……
    mrliusg
        13
    mrliusg  
       2024-04-17 10:04:34 +08:00
    “又不是不能用”
    MadSix
        14
    MadSix  
    OP
       2024-04-17 10:07:28 +08:00
    @qinfengge
    @mrliusg

    如果我也是看戏的,我也能说一句那确实牛逼。但我这下真有一头牛了,这口屎我吃下去怎么受得了
    MadSix
        15
    MadSix  
    OP
       2024-04-17 10:08:22 +08:00
    @uiosun
    “说好听点叫防御性代码,说难听点他自己都不一定维护的起来……”
    快问我这个项目为什么重做
    wusheng0
        16
    wusheng0  
       2024-04-17 10:08:22 +08:00   ❤️ 28
    防御性编程是专门的名词吧,你们这么用现在都变成反义词了,后面怎么正常交流

    > 防御性编程( Defensive programming )是防御式设计的一种具体体现,它是为了保证,对程序的不可预见的使用,不会造成程序功能上的损坏。
    > 它可以被看作是为了减少或消除墨菲定律效力的想法。 防御式编程主要用于可能被滥用,恶作剧或无意地造成灾难性影响的程序上。
    MadSix
        17
    MadSix  
    OP
       2024-04-17 10:09:18 +08:00
    @wusheng0 下次加上引号
    devilte
        18
    devilte  
       2024-04-17 10:10:19 +08:00
    @uiosun #12 假设真看到这样的代码 我都要纠结一下是作者真实水平烂还是作者刻意为之,毕竟刻意写成这样都是反第一反应的 会增加一定的心智负担,真的有人在写防御性代码吗😂
    qianckjuan
        19
    qianckjuan  
       2024-04-17 10:13:32 +08:00   ❤️ 1
    项目要过来自己人全写,或者把项目推出去
    Patrick6
        20
    Patrick6  
       2024-04-17 10:14:26 +08:00
    原来这个是日经贴啊,代码和人有一个能跑就行
    handpr
        21
    handpr  
       2024-04-17 10:15:25 +08:00
    @MadSix #10 和我现在上手的项目一样.举个例子.之前的后端让前端自己写死控制哪个按钮显示不显示
    fredweili
        22
    fredweili  
       2024-04-17 10:15:33 +08:00
    强化 code review ,不允许随便 merge
    yangxiaopeipei
        23
    yangxiaopeipei  
       2024-04-17 10:15:41 +08:00
    code review 怎么过的
    FrankAdler
        24
    FrankAdler  
       2024-04-17 10:16:26 +08:00 via Android
    原来代码写的烂还有这么一个高大上的名字
    whoosy
        25
    whoosy  
       2024-04-17 10:19:34 +08:00   ❤️ 2
    我认为只是单纯的水平菜,身边技术稍微强点的基本上对代码都有洁癖
    RightHand
        26
    RightHand  
       2024-04-17 10:19:46 +08:00 via Android
    拆分,推出去
    7h3d4wn
        27
    7h3d4wn  
       2024-04-17 10:21:02 +08:00
    把这个人要到你组里来负责后续维护
    你的核心问题是以后维护麻烦,那就人跟着项目走
    其他没什么更好办法了
    liyanan
        28
    liyanan  
       2024-04-17 10:21:18 +08:00
    能不能反噬一下他自己?这个项目维护归属 op 看看能不能换成他,自己种的果子自己吃吧~
    MadSix
        29
    MadSix  
    OP
       2024-04-17 10:21:23 +08:00
    @yangxiaopeipei 描述里说过了
    这项目负责人是个万年老大哥,人不做代码 review 而且他位高权重的咱也管不着
    h272377502
        30
    h272377502  
       2024-04-17 10:21:29 +08:00
    现在有 ai 了,感觉问题不是很大,让 ai 基于他的代码转化成可维护的,不断校验每步的输出。
    foxkiller
        31
    foxkiller  
       2024-04-17 10:23:10 +08:00
    你们不 Code Review 啊?
    7h3d4wn
        32
    7h3d4wn  
       2024-04-17 10:23:21 +08:00
    换句话说,是系统性问题,或者说,管理问题造成了你当下的 dilemma
    你又改变不了整个管理风格,那你基本就只能成全这哥们儿的防御性
    yanw
        33
    yanw  
       2024-04-17 10:23:57 +08:00
    可能单纯就是菜
    MadSix
        34
    MadSix  
    OP
       2024-04-17 10:24:56 +08:00
    @foxkiller
    描述里说过了
    我们的其他开发都是做的,但这个项目是技术老大哥“亲自”负责。人不怎么管事,代码 review 也不做。位高权重我们也管不着
    sparklee
        35
    sparklee  
       2024-04-17 10:25:01 +08:00
    我所理解的 防御性编程 是提前返回, 考虑到各种异常情况提前 return, 减少 else 减少条件判断嵌套的写法
    chocolate518
        36
    chocolate518  
       2024-04-17 10:25:37 +08:00
    这不叫防御性编程吧,没有代码规范就是这样了 如果不想操心就是反正也不是不能跑的心态,如果觉得别扭就推动代码规范
    wanguorui123
        37
    wanguorui123  
       2024-04-17 10:27:06 +08:00
    在包一层外壳继续拉💩💩💩
    villivateur
        38
    villivateur  
       2024-04-17 10:28:04 +08:00   ❤️ 13
    禁止污染“防御性编程”词条
    mansurx
        39
    mansurx  
       2024-04-17 10:28:37 +08:00
    交叉管理确实没什么办法了,但可以把情况先写在周报里,避免锅从天上来。

    后面维护可以考虑引入 ai 解释/重构这段代码……专门克制这种“防御性编程”
    S9Yh4wIFsBG7jnE4
        40
    S9Yh4wIFsBG7jnE4  
       2024-04-17 10:29:42 +08:00
    世界是一个草台班子 这话没错的
    me1onsoda
        41
    me1onsoda  
       2024-04-17 10:32:10 +08:00
    你跟你技术老大多学学吧,他怎么就 cover 住了呢,带着这么“祸害”走了这么多年?
    Jame00001
        42
    Jame00001  
       2024-04-17 10:33:18 +08:00
    直接跟上级表明,自己组做耗时耗力需要增加大量工时,安排那个人做成本更低。为了避免公司利益损失,请领导出面指明让他维护。
    zhao8681286
        43
    zhao8681286  
       2024-04-17 10:33:52 +08:00
    我以为是正常逻辑写完了花了 20%的代码其他 80%的用来处理异常情况的防御性编程呢,结果不就是只有自己能看懂的屎山代码吗?
    alexsz
        44
    alexsz  
       2024-04-17 10:34:24 +08:00
    @h272377502 我也觉得应该让 AI 解释代码
    MadSix
        45
    MadSix  
    OP
       2024-04-17 10:34:36 +08:00   ❤️ 1
    @me1onsoda 跟他学不来,人家根基深厚位高权重。有问题向下施压或者要求公司调动资源重做项目就行了。上一个就这么黄的。人自己又不干活,不用吃屎。
    我算哪根葱跟他学,学完就废了
    icyalala
        46
    icyalala  
       2024-04-17 10:37:37 +08:00
    这是防御性编程的概念: https://zh.wikipedia.org/zh-cn/防御性编程
    这是好事
    k9982874
        47
    k9982874  
       2024-04-17 10:42:16 +08:00   ❤️ 2
    你们这流程有问题,接收前拉个验收会,叫上相关负责人和技术主管,一个模块一个模块的过,列出来哪些系统问题和需求问题需要改,说明质量不行拒绝接收。

    话说“防御性编程”现在已经是指在项目里拉屎,增加维护难度了么?
    bianhui
        48
    bianhui  
       2024-04-17 10:45:52 +08:00
    没有改不了的代码,只有改不了的人。在软件工程还没有普及的时候,大家的开发都是一把梭哈
    nthin0
        49
    nthin0  
       2024-04-17 10:47:01 +08:00
    理解岔了,我看到的第一反应也是:防御性编程难道不是好事吗😂
    sofukwird
        50
    sofukwird  
       2024-04-17 10:47:54 +08:00 via Android   ❤️ 1
    对领导说这位同事的代码水平过高,自己维护不了他的代码
    uiosun
        51
    uiosun  
       2024-04-17 10:48:19 +08:00
    @wusheng0 不,大佬你这是“防御性编程”,我们不考虑编程,单纯的“防御性代码”

    还是有区别的,虽然扣文字很无聊,但楼主遇到的这种人,连代码都没写好,更别提编程/软件工程了……
    junkk
        52
    junkk  
       2024-04-17 10:48:36 +08:00   ❤️ 4
    防御性编程是防御式设计的一种具体体现,它是为了保证,对程序的不可预见的使用,不会造成程序功能上的损坏。

    不是防御开除式编程,拉屎就拉屎,不要重新定义老的词语,什么毛病。
    hahiru
        53
    hahiru  
       2024-04-17 10:50:35 +08:00
    应该是菜。
    我指的是公司。
    如果是国企当我没说。
    F7TsdQL45E0jmoiG
        54
    F7TsdQL45E0jmoiG  
       2024-04-17 10:53:18 +08:00   ❤️ 1
    这种代码往往能顺利的通过 sonar 的扫描
    MadSix
        55
    MadSix  
    OP
       2024-04-17 10:54:22 +08:00
    @hahiru 一针见血,很到位,我的互联网嘴替
    ooee2016
        56
    ooee2016  
       2024-04-17 10:56:01 +08:00
    @IMelon #2 遇到过所有的方法参数定义都是 void Fun(string a1, string a2, string a3, string a4, string a5);
    rehoni
        57
    rehoni  
       2024-04-17 10:56:23 +08:00   ❤️ 2
    "我现在很想跟上面反馈一下这个问题,但是我这种跨管辖范围的做法总是不太好,而且也不知道提了有没有用。难道就这么把这口屎吃下来不成。"
    现状是
    1. 你是第一责任人,到时候维护他没事,你背锅
    2. 你已经在吃屎了
    我觉得 OP 也别管那么多了,他这种行为已经深刻影响了你的利益,不想沦落到代码和你只有一个能跑的话。就低情商,就把事情办得难看,让大家都挂不住面子,当个刺猬。
    yuwangG
        58
    yuwangG  
       2024-04-17 11:00:37 +08:00
    卷起来
    ersic
        59
    ersic  
       2024-04-17 11:01:49 +08:00
    也许他就是这么菜呢
    cathub86
        60
    cathub86  
       2024-04-17 11:04:10 +08:00
    一模一样了 2 月 20 接受了 一个屎山 要把底层的 es 换成 ck 代码没注释 问他还爱答不理
    组长: 有这么难么 就换个组件 不是很简单么
    我: 我要理清楚业务流程才能改 代码没注释
    组长:那你问啊 人就在你旁边
    cathub86
        61
    cathub86  
       2024-04-17 11:09:07 +08:00
    @cathub86 更骚的是 有很多功能是半成品 就提交了 我问他 他说 那你改一下行了 不是很简单么
    Jiajin
        62
    Jiajin  
       2024-04-17 11:10:54 +08:00
    还得是 AI 解释代码。
    dog82
        63
    dog82  
       2024-04-17 11:14:38 +08:00   ❤️ 1
    楼主曲解防御性编程的意思了
    防御性编程是指编写更稳定更健壮的代码
    而不是编写别人看不懂的代码
    MadSix
        64
    MadSix  
    OP
       2024-04-17 11:15:52 +08:00
    @dog82 感谢指出 请看附言
    iphantom
        65
    iphantom  
       2024-04-17 11:23:58 +08:00
    从根本解决呗,找组 2 要这个人到你的组后续他维护被,或者让你组的小弟和他互换。你们两个组可以沟通那没问题,不行就找老大协调呗,把人要回来吧~
    cominghome
        66
    cominghome  
       2024-04-17 11:27:49 +08:00
    到底是防御性编程还是人菜,要先搞清楚
    MadSix
        67
    MadSix  
    OP
       2024-04-17 11:28:00 +08:00   ❤️ 2
    @iphantom 其实我也知道这是最佳方案,我只是不愿意面对。
    甚至老大都找我沟通过了,我如果想换人他是能过来的。不过这么个祖宗我内心不情愿放过来。
    要知道这个项目总有没活的时期,到时候不能让他闲着吧?一旦把他放到我其他项目里去了,这玩意就跟传染一样,沾一个染一个
    tkHello
        68
    tkHello  
       2024-04-17 11:30:33 +08:00
    保护自己的代码: 在将来的工作中,采取一些防御性编程的措施来保护自己的代码。例如,使用代码水印技术、定期进行代码审查、在代码中添加详细的注释和文档等。
    tkHello
        69
    tkHello  
       2024-04-17 11:31:56 +08:00
    采用代码水印技术: 在代码中嵌入独特的标识符或水印,以标记代码的所有者。这样即使代码被剽窃,也可以通过检测水印来识别代码的来源。
    chiu
        70
    chiu  
       2024-04-17 11:31:59 +08:00   ❤️ 1
    所以说 reviewer 是代码库的一道防线
    PN27149
        71
    PN27149  
       2024-04-17 11:35:02 +08:00
    想学学怎么写防御性代码,哈哈
    mazz
        72
    mazz  
       2024-04-17 11:46:38 +08:00
    @mrliusg 罗.jpg
    pqlamz
        73
    pqlamz  
       2024-04-17 11:57:09 +08:00
    那他自己怎么维护的啊?看起来,像是源代码自带混淆,无需 proguard/obfuscator 。读源码就是做逆向的感觉吗?
    cmdOptionKana
        74
    cmdOptionKana  
       2024-04-17 11:57:09 +08:00
    老大不急,你急啥,慢慢干呗。

    把你遇到的情况详细记录,说明影响工作进度,以能保留证据的形式向上级报告,剩下的事情你就不用管了。
    skymei
        75
    skymei  
       2024-04-17 11:58:15 +08:00
    上家有个同事就是这样,改他的代码真的火大,各种脱裤子放屁,最后加上公司氛围确实不好,我早早的就撤了
    cmdOptionKana
        76
    cmdOptionKana  
       2024-04-17 12:01:25 +08:00   ❤️ 1
    另外,他不受你管,你可以架空他,他提交的代码你一个字别动,只在外面加 wrapper 来调用,实在不行就自己重写,备注里说明重写的原因,备注里指名道姓批评他。
    version
        77
    version  
       2024-04-17 12:02:24 +08:00   ❤️ 1
    直接搞成微服务.提供接口文档.字段注解.管他内部怎么实现..接口性能可以监测...想重构谁的业务.也是很简单的..
    cmdOptionKana
        78
    cmdOptionKana  
       2024-04-17 12:04:38 +08:00
    @MadSix 能把人调过来,你是老大,还怕小弟?制定一个一视同仁的规定,他的代码不符合要求他重写,屡教不改就可以依法辞退了。
    MadSix
        79
    MadSix  
    OP
       2024-04-17 12:11:02 +08:00
    @cmdOptionKana #78 都是打工的,何苦相互为难,什么老大不老大的。我没兴趣去“矫正”别人,只要不影响到我就行。
    如果不是没得选的情况,谁想主动要个祖宗过来还得跟他斗智斗勇。省点心不好么。
    ren5ren6
        80
    ren5ren6  
       2024-04-17 12:28:53 +08:00   ❤️ 1
    能和他一对一的谈一次么?请吃饭或拉到没人办公室。直接说他不归你管但需要你今后擦屁股的心中隐忧,谈时不要迂回,开诚布公、直接明了,但,一定一定态度和善诚恳。看他当时怎么说、之后怎么做,你自己需要做些什么不就是一定的了吗?
    chaos93
        81
    chaos93  
       2024-04-17 12:35:53 +08:00
    扔给 GPT
    zgl263885
        82
    zgl263885  
       2024-04-17 12:39:27 +08:00 via iPhone
    目前我接手的项目有个方法 1500 多行代码。但资本家没有少发钱,默默吃着了。
    991547436
        83
    991547436  
       2024-04-17 12:51:04 +08:00
    写得好又不会加工资,你不能维护关他什么事,除非加钱
    littlewing
        84
    littlewing  
       2024-04-17 13:01:18 +08:00
    不是我理解的 防御性编程,我以为是做了太多 check 影响性能了
    MadSix
        85
    MadSix  
    OP
       2024-04-17 13:04:42 +08:00
    @991547436 写的好会加的
    kneo
        86
    kneo  
       2024-04-17 13:08:37 +08:00
    为什么这种人在你们公司成了主力?
    lategege
        87
    lategege  
       2024-04-17 13:09:01 +08:00
    防御性编程最新释义:编写只有自己能懂的代码来预防被公司优化。
    7VO54YYGvw3LOF9U
        88
    7VO54YYGvw3LOF9U  
       2024-04-17 13:09:43 +08:00 via iPhone
    @miraumr 拉个更牛逼的
    MadSix
        89
    MadSix  
    OP
       2024-04-17 13:12:36 +08:00
    @kneo 要是有人能代我去问问老板这个问题就好了 我是不敢问
    wolfan
        90
    wolfan  
       2024-04-17 13:13:01 +08:00
    错误作法:V 站求意见。
    正确作法:写邮件上报。
    MadSix
        91
    MadSix  
    OP
       2024-04-17 13:13:02 +08:00
    @lategege 请见附言
    calano
        92
    calano  
       2024-04-17 13:14:54 +08:00
    扔给 copilot 让优化结构,我用下来发现拆的方法有点过于细了
    gesse
        93
    gesse  
       2024-04-17 13:23:44 +08:00
    huruwo
        94
    huruwo  
       2024-04-17 13:51:23 +08:00
    既然有防御式编程,我想知道进攻式编程是什么样子。

    你用你的进攻式编程来突破他的防御式编程不就行了。
    gkiwi
        95
    gkiwi  
       2024-04-17 14:09:36 +08:00
    我以为的防御式编程,是过度的判断非空,喜欢到处 trycatch...
    SSSensational
        96
    SSSensational  
       2024-04-17 14:14:20 +08:00
    uniswap 的前端代码是防御性编程的典例
    iphantom
        97
    iphantom  
       2024-04-17 14:27:10 +08:00
    @MadSix 你本质上是不希望他给你埋坑么 但是现在来看坑肯定有的 那你现在的期望更多是别让自己背锅么 那你现在只能先确认下这个锅让谁来背锅。 所以肯定是这哥们要来背最好。
    关于这哥们后续的安排,其实也很明显啊,就是去做对接或者支持类的工作,比如你们组总有一些要支持其他团队的时候,就让他去吧,这样其他组看到这个熊样,为了防止自己背锅,大概率也会重复你的操作,把他要回去,大概就是这哥们就成流水的兵了吧····
    FantaMole
        98
    FantaMole  
       2024-04-17 14:51:44 +08:00
    大伙儿都不知道你这个项目是怎么样的,技术栈是什么,项目结构是什么样的。大家就算有解决方案,也跟你看屎山代码一样不知道怎么入手,思路只能是在人事安排或者工作职责上想想办法

    我提个思路吧,如果不想碰狗屎的话,我假设这个项目是个微服务项目,且开发完成之后改动不会很频繁,然后你说你们项目组之间开发的功能耦合不强,那你现在就要做两个事情:

    1. 多 push 测试,趁这个同事还在开发这个项目,尽量多测试,让问题多多暴露出来,让他改好

    2. 做项目拆分,把那个同事所有开发的屎山代码都拆分出来,单独成为一个服务,下沉这个服务作为基础服务,没有特殊情况不做修改。以后有功能上的修改或者业务上的变更,调用这个基础服务,在服务接口返回结果的基础上做功能拓展或者业务变更

    你说性能问题,牙医 shake it ,代码都成了这个样子

    如果实在不行的话,前几年有个很火的折磨游戏,叫做 “和 Bennett Foddy 一起攻克难关”,那你也可以 “和 OpenAPI 一起翻越屎山”
    Hyakutake
        99
    Hyakutake  
       2024-04-17 15:02:28 +08:00
    问题很明确,拦不住创建屎山的人,并即将接手屎山。
    1. 先试试拦着拉屎的人。向技术老大汇报,让对应组的人改掉,验收后在接。
    2. 拦不住就考虑不接。如果没得选择,那看看能不能提前接,在还是一个屎堆的时候就重构了。
    3. 接下来,如果想维护好,分两种,屎上雕花或者直接推倒重来。
    4. 屎上雕花,就是后续的功能,按规范开发,尽量不动之前的东西。看过了就补一点注释。
    5. 直接推倒重来,有资源就把接口在写一遍,没资源扔给 gpt 读代码,然后再重构吧。
    bojackhorseman
        100
    bojackhorseman  
       2024-04-17 15:09:15 +08:00   ❤️ 1
    "防御性编程"指防止他人参与的编程
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:06 · PVG 03:06 · LAX 12:06 · JFK 15:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.