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

请问同事代码实在是烂到让人无法忍受怎么办

  •  
  •   sqfphoenix · 2021-08-04 14:15:25 +08:00 · 7205 次点击
    这是一个创建于 1208 天前的主题,其中的信息可能已经有所发展或是发生改变。

    利益相关,经常需要合作开发一个功能,所以在一些模块中会有交集,做不到眼不见为净

    不说远的,就说今天发生的事情

    • 共同改一个模块,直接把我好好的代码改崩了,我排查了半天发现其中判断逻辑匪夷所思

    • 他在 helper 中加了自己写的一个 IsXXX() bool 方法,返回值居然和函数名称是相反的,然后调用的时候全部都反向判断

    我真的血压升高,拳头都看硬了,也不是没有做过代码 review,也分析了为什么代码写的不好,改完还是老样子,这种同事应该怎么相处,我现在天天跟坐牢一样好苦

    80 条回复    2021-08-09 14:44:16 +08:00
    InDom
        1
    InDom  
       2021-08-04 14:20:52 +08:00   ❤️ 116
    不敢点进来,怕你说的是我。
    erwin985211
        2
    erwin985211  
       2021-08-04 14:21:48 +08:00
    上级反映,申请跟换项目
    Jaosn
        3
    Jaosn  
       2021-08-04 14:22:10 +08:00
    不敢点进来,怕你说的是我。
    signalyc
        4
    signalyc  
       2021-08-04 14:22:26 +08:00
    1. 分开,使之没有交集
    2. 把他 /她的工作都做了
    fkname
        5
    fkname  
       2021-08-04 14:24:22 +08:00
    不敢点进来,怕你说的是我。
    jonathanchoo
        6
    jonathanchoo  
       2021-08-04 14:27:40 +08:00   ❤️ 1
    不敢点进来,怕你说的是我。
    kop1989
        7
    kop1989  
       2021-08-04 14:32:44 +08:00   ❤️ 2
    1 、合作常见,但为何会导致逻辑污染?(换句话说,你们会经常修改对方的代码吗?)
    2 、一切交集以文档与方法注释为准。起名你看不顺眼并不意味着是“代码烂”。(别人名字你看不顺眼你也要逼着对方改户口本么?)
    sqfphoenix
        8
    sqfphoenix  
    OP
       2021-08-04 14:33:20 +08:00
    @InDom 兄弟你就是始作俑者,必须给你一个赞
    sqfphoenix
        9
    sqfphoenix  
    OP
       2021-08-04 14:37:07 +08:00
    @kop1989
    第一个问题是这样的 比如我的代码是 1.1 -> 1.2 -> 1.3 这样执行,他的代码是 2.1 -> 2.2,是通过一个状态判断到底走哪个逻辑的,结果他一改,把逻辑入口给改了,所有逻辑全部都走 2,也就是永远走不到 1 的逻辑了,这种情况我真的没有办法控制逻辑了
    至于第二个问题,我说的只是冰山一角,我对代码是非常宽容的,一般只要正常运行用例通过都 OK,可是这种代码,完全就是地雷,你永远不知道调用这个函数有什么后果
    micean
        10
    micean  
       2021-08-04 14:48:23 +08:00
    好像我接手的那位,尤其是第二点,令人记忆深刻
    3dwelcome
        11
    3dwelcome  
       2021-08-04 14:54:48 +08:00 via Android
    明显是模块责任没划分好,为什么要共同改一个模块呢?把大模块分开,每人只改自己那部分的多好。
    shapl
        12
    shapl  
       2021-08-04 14:54:52 +08:00
    还是按模块划分吧。说好尽量别碰对方代码。
    woomly
        13
    woomly  
       2021-08-04 14:58:11 +08:00
    他在 helper 中加了自己写的一个 IsXXX() bool 方法,返回值居然和函数名称是相反的,然后调用的时候全部都反向判断
    ------------------------------------------------------------------------
    简直气炸!
    sqfphoenix
        14
    sqfphoenix  
    OP
       2021-08-04 14:58:21 +08:00
    @3dwelcome 这个确实,当时的背景是我手上堆了一堆需求做不完,只能让他写了,结果这块代码现在就是永远的痛
    erlking
        15
    erlking  
       2021-08-04 15:00:12 +08:00   ❤️ 1
    多大点事,默默的重命名为 isNotXXX 完事
    scxiazi
        16
    scxiazi  
       2021-08-04 15:08:37 +08:00
    你见过只会写单表增删改查的吗, 让他提供接口就说业务入侵了
    zcfnc
        17
    zcfnc  
       2021-08-04 15:34:57 +08:00
    我已经麻了 我甚至还有写方法名带数字的同事 他还是我的领导 你敢信?
    banmuyutian
        18
    banmuyutian  
       2021-08-04 15:37:50 +08:00   ❤️ 1
    @zcfnc
    这事我也干过,用'2'代替'to'
    LowBi
        19
    LowBi  
       2021-08-04 15:38:50 +08:00 via Android   ❤️ 1
    一个人写项目自由自在,虽然会累会很忙
    czzhengkw
        20
    czzhengkw  
       2021-08-04 15:41:32 +08:00
    模块拆解+单元测试+代码 review

    改代码可以,几百个测试全部能跑通,pr 才能合并进来
    darksword21
        21
    darksword21  
       2021-08-04 15:43:25 +08:00
    @zcfnc 我也干过 2 4
    zcfnc
        22
    zcfnc  
       2021-08-04 16:01:40 +08:00
    @banmuyutian #17
    @darksword21 #20
    啊这,两位无意冒犯。这里特指我的领导(:
    mrxun1998
        23
    mrxun1998  
       2021-08-04 16:02:39 +08:00
    不敢点进来,怕你说的是我。
    Shook
        24
    Shook  
       2021-08-04 16:12:27 +08:00
    之前我写的分页组件,计算当前页的算法有点问题。
    我后面搞别的项目去了,接手我项目的同事因为老有分页问题被骂了好多次。

    偷偷看他们项目的接口文档,发现 start 是从 0 开始的,我的算法是从 1 开始算的。
    YhXyt
        25
    YhXyt  
       2021-08-04 17:41:41 +08:00
    @zcfnc 这不是很正常吗。xml2Json()
    ALVC666
        26
    ALVC666  
       2021-08-04 17:44:35 +08:00
    代码和人 有一个能跑就行[Doge]
    zhuangjia
        27
    zhuangjia  
       2021-08-04 17:46:16 +08:00
    还是要加注释
    lizenghui
        28
    lizenghui  
       2021-08-04 17:48:40 +08:00
    哈哈哈 楼主太纠结
    This is just a job
    leafre
        29
    leafre  
       2021-08-04 17:50:59 +08:00
    模块继续细分
    rainymoring1995
        30
    rainymoring1995  
       2021-08-04 17:59:09 +08:00   ❤️ 1
    不想干就走呗,贼烦对同事指手画脚的,你又不是直系领导
    fengfuliu
        31
    fengfuliu  
       2021-08-04 18:01:08 +08:00
    @banmuyutian 这个用法还好吧 我看到很多出名的库也是这样的
    lzjamao
        32
    lzjamao  
       2021-08-04 18:23:26 +08:00
    你同事工作方式有问题。
    改别人代码逻辑,最好找负责过该处的同事商量好再改。
    MiniGhost
        33
    MiniGhost  
       2021-08-04 18:28:44 +08:00
    1. 分工的时候尽量避免特别密集的代码交叉,尽量同期需求各自负责各自的
    2. 推 Code Review,开发需求强制要求拉新分支,合并分支强制走 Review,同事 Review 不通过不给合并
    zxCoder
        34
    zxCoder  
       2021-08-04 18:45:08 +08:00
    @YhXyt xmlToJson 也没啥不好吧 能问下用 2 代替 to 的好处吗
    dongdongdong
        35
    dongdongdong  
       2021-08-04 18:56:31 +08:00
    我了
    SjwNo1
        36
    SjwNo1  
       2021-08-04 20:02:31 +08:00
    如果你是 reviewer 的话,不改就不给合,如果你不是的话,好像没啥办法
    wisetc
        37
    wisetc  
       2021-08-04 22:54:22 +08:00 via iPhone
    你们约定一下子,以及讲讲这么做为什么好,以及对他也好,用权威的客观的主流观点代替自己说话,告诉别人你的边界,以及他的边界,避免相互影响相互伤害,否则兵戎相见也不好看。
    wisetc
        38
    wisetc  
       2021-08-04 23:04:42 +08:00 via iPhone
    有些人水平比较低也不尊重人,这种人还可能你躲也躲不过,讲道理还不一定听,哪你岂不是很难受?怎么办呢?要么建墙阻隔侵扰,要么交流到达彼此同化,要么强迫把人家赶走,你觉得哪种更好?
    lululau
        39
    lululau  
       2021-08-04 23:12:30 +08:00   ❤️ 1
    个人经验:只要是你俩共同开发的任务,把他的活都干了; 多干就是少干,你不管他的,可能得陪他一块加班,你多干了可能反而不需要加班
    pengtdyd
        40
    pengtdyd  
       2021-08-05 03:56:07 +08:00
    这就体现一个人写一个模块的好处了
    Perry
        41
    Perry  
       2021-08-05 06:55:22 +08:00 via iPhone
    一看就是测试都没有
    vZexc0m
        42
    vZexc0m  
       2021-08-05 08:42:08 +08:00
    @zxCoder #34 如果不是驼峰命名,就得写成 xml_to_json
    steptodream
        43
    steptodream  
       2021-08-05 08:46:57 +08:00   ❤️ 1
    可能会有人看到你的代码也是一样的感觉
    kiritoxf
        44
    kiritoxf  
       2021-08-05 08:51:21 +08:00
    我有个同事还不如你这个同事……
    工作三年了编码能力和学习能力像实习生一样
    关键是也得一起合作,唉
    66beta
        45
    66beta  
       2021-08-05 09:19:36 +08:00
    一遍跟前同事吐槽,一遍擦屁股,还能怎么办...
    entro
        46
    entro  
       2021-08-05 09:25:06 +08:00
    建议反馈给领导,理由是影响项目开发进度
    Kimen
        47
    Kimen  
       2021-08-05 09:37:39 +08:00
    世界是有层次的,建议跑路
    tonzeng
        48
    tonzeng  
       2021-08-05 09:38:22 +08:00
    淦他娘草鸡掰
    jiayong2793
        49
    jiayong2793  
       2021-08-05 09:39:40 +08:00
    向项目经理反馈,请求让他做独立模块
    piloots
        50
    piloots  
       2021-08-05 09:42:29 +08:00
    不敢点进来,怕你说的是我。
    gulullu
        51
    gulullu  
       2021-08-05 09:45:16 +08:00
    不敢点进来,怕你说的是我。
    dfkjgklfdjg
        52
    dfkjgklfdjg  
       2021-08-05 10:00:25 +08:00   ❤️ 1
    @rainymoring1995 #30,屎山就是这样出来的....
    [Dev_1] 随性开发,到最后改不动了直接走人,[Dev_2] 接手直接脑溢血送 ICU,[Dev_3] 接盘重构。
    balezhang
        53
    balezhang  
       2021-08-05 10:30:25 +08:00
    不敢点进来,怕你说的是我。
    Brentwans
        54
    Brentwans  
       2021-08-05 10:31:54 +08:00
    1.上策,尽快溜掉,避免和他合作,省时省力。
    2.中策,让直接领导知道并认同你的看法,让领导去沟通。就算沟通无果,后面也好甩锅。
    3.下策,你说沟通无果。那首先划分好模块,但是你们是一个功能,唇亡齿寒吧。加强单测确保功能,只要他的功能没问题,屎山又奈你何。
    4.地下室策。大哥喝茶,你的功能我帮你写
    coderluan
        55
    coderluan  
       2021-08-05 10:33:02 +08:00
    职场上, 所有同事的问题, 都是领导的问题, 反应上去就完了.
    ZzFoo
        56
    ZzFoo  
       2021-08-05 10:33:45 +08:00
    @kop1989 你再好好看看,第二点是顺不顺眼的问题吗?
    wupher
        57
    wupher  
       2021-08-05 10:39:23 +08:00   ❤️ 1
    我之前也碰到过类似情况。

    当时是眼不见心不乱,反正能跑,我就不管,而且也是临时帮忙。

    后来他离职了,这块代码在检查中发现,到处是各种匪夷所思的实现。比如明明在外面查询一次即可获取得的数据库开关属性,结果在 for 循环中每次都再查询一遍……不使用诸如对象或者 VO,而是使用 map 直接各种插入,而取的时候又完全不管可不可能为空。层级封装就更离谱。

    最后和产品商量,通过某次界面改版直接把他原来的代码功能全废弃掉了,代码留在原地,添加注释引以为教训。

    但从头管到尾,貌似也不好。

    不过,我还是觉得 You are not your code. Be kind to coder, not to the code.

    代码写的烂,但不意味着就是坏人。
    kop1989
        58
    kop1989  
       2021-08-05 10:41:17 +08:00
    @ZzFoo #56 谁规定 isXXX,必须 true 就是 yes (是),false 就是 no (不是)了?
    英语语境与汉语语境的“是”与“不是”往往是相反的。
    ZzFoo
        59
    ZzFoo  
       2021-08-05 10:54:37 +08:00
    @kop1989 麻烦举个例子
    fareware
        60
    fareware  
       2021-08-05 11:04:41 +08:00
    当觉得周围都不如自己时,那就换一个更高的地方,来证明之前他们真的不如自己。
    goodboy95
        61
    goodboy95  
       2021-08-05 11:28:59 +08:00
    @kop1989 什么情况下汉语英语的“是”与“不是”相反,举几个例子吧,我自己是想不太出来,唯一能想到但又特别牵强的就是“Don't you know”这种带 not 的疑问句
    Yc1992
        62
    Yc1992  
       2021-08-05 12:08:19 +08:00
    review 直接写 comment 啊,只要你不尴尬,尴尬的就是他
    lxfcool
        63
    lxfcool  
       2021-08-05 13:32:43 +08:00
    @InDom 笑死
    comoyi
        64
    comoyi  
       2021-08-05 13:37:00 +08:00
    让他全部改回来
    Paaranoia
        65
    Paaranoia  
       2021-08-05 13:48:57 +08:00
    跟楼主有同样的感受,分享下我的经历
    我写了一个,根据版本号检查更新的逻辑
    新来的同事,改了我的代码,把一个“1.0.0”这样的字符串用 Integer.parseInt()转换
    导致 App 上线以后,所有检查更新都崩了
    我当时血压直接就上来了
    z740713651
        66
    z740713651  
       2021-08-05 13:53:23 +08:00
    python 的话写个 typing?

    就有理由告老板了
    Felldeadbird
        67
    Felldeadbird  
       2021-08-05 13:54:01 +08:00
    代码隔离不到位。或者是,你的业务对方不熟悉。没有留下文档或注释。团队肯定有水平高低的,让管事的来规划好代码开发
    est
        68
    est  
       2021-08-05 13:54:24 +08:00
    生气归生气,你应该做一个单元测试把自己的方法守住。别人改的话测试直接不让通过。
    free9fw
        69
    free9fw  
       2021-08-05 14:02:21 +08:00
    离职吧,迟早会被祸害
    zzx0403
        70
    zzx0403  
       2021-08-05 14:08:07 +08:00
    之前见过各种简写的😂function 本来简写 fun,他来个 fun 。teacher 硬是要简写成 tea,各种简写看都看不懂
    sexyback
        71
    sexyback  
       2021-08-05 14:11:05 +08:00
    跟同样是应届生的同事一起写一个模块,像 status 这种状态标志,有人 int8 有人 int32 有人 int,真的难顶
    elevioux
        72
    elevioux  
       2021-08-05 14:16:04 +08:00
    再包装一下 notXXX(){return !isXXXX();}😂
    rrZ2C
        73
    rrZ2C  
       2021-08-05 14:56:18 +08:00
    @banmuyutian 呀 学到了,长一点的方法名真讨厌写 To
    nicetoomeetyou
        74
    nicetoomeetyou  
       2021-08-05 15:00:30 +08:00
    看描述,应该是不属于一个部门和领导的同事。所有反映是没啥用的。
    这时候建议听下歌,https://www.kuwo.cn/play_detail/236015
    hatsuyuki
        75
    hatsuyuki  
       2021-08-05 18:03:20 +08:00
    @zzx0403 Rust 里定义函数的关键字是 fn,Kotlin 里定义函数的关键字是 fun,Go 里定义函数的关键字是 func,这样来看的话 function 简写成 fun 也不是不能接受😂
    zzx0403
        76
    zzx0403  
       2021-08-05 18:13:34 +08:00
    @hatsuyuki 主要是我上次看到了他自己的项目 目录名称 funny1 funny2 funny3 当时我真的蚌埠住了😅
    uselessVisitor
        77
    uselessVisitor  
       2021-08-05 21:46:53 +08:00 via Android
    帮他把代码改对
    cloudfstrife
        78
    cloudfstrife  
       2021-08-06 10:28:27 +08:00
    不敢点进来,怕你说的是我。
    NoDocCat
        79
    NoDocCat  
       2021-08-06 15:12:14 +08:00
    不敢点进来, 怕你说的是我.
    https://imgur.com/a/BcuKMdq
    TeaPolyphenols
        80
    TeaPolyphenols  
       2021-08-09 14:44:16 +08:00
    最后我给他重写了..
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:10 · PVG 03:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.