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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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