利益相关,经常需要合作开发一个功能,所以在一些模块中会有交集,做不到眼不见为净
不说远的,就说今天发生的事情
共同改一个模块,直接把我好好的代码改崩了,我排查了半天发现其中判断逻辑匪夷所思
他在 helper 中加了自己写的一个 IsXXX() bool 方法,返回值居然和函数名称是相反的,然后调用的时候全部都反向判断
我真的血压升高,拳头都看硬了,也不是没有做过代码 review,也分析了为什么代码写的不好,改完还是老样子,这种同事应该怎么相处,我现在天天跟坐牢一样好苦
![]() | 1 InDom 2021-08-04 14:20:52 +08:00 ![]() 不敢点进来,怕你说的是我。 |
![]() | 2 erwin985211 2021-08-04 14:21:48 +08:00 上级反映,申请跟换项目 |
![]() | 3 Jaosn 2021-08-04 14:22:10 +08:00 不敢点进来,怕你说的是我。 |
![]() | 4 signalyc 2021-08-04 14:22:26 +08:00 1. 分开,使之没有交集 2. 把他 /她的工作都做了 |
![]() | 5 fkname 2021-08-04 14:24:22 +08:00 不敢点进来,怕你说的是我。 |
6 jonathanchoo 2021-08-04 14:27:40 +08:00 ![]() 不敢点进来,怕你说的是我。 |
![]() | 7 kop1989 2021-08-04 14:32:44 +08:00 ![]() 1 、合作常见,但为何会导致逻辑污染?(换句话说,你们会经常修改对方的代码吗?) 2 、一切交集以文档与方法注释为准。起名你看不顺眼并不意味着是“代码烂”。(别人名字你看不顺眼你也要逼着对方改户口本么?) |
![]() | 8 sqfphoenix OP @InDom 兄弟你就是始作俑者,必须给你一个赞 |
![]() | 9 sqfphoenix OP @kop1989 第一个问题是这样的 比如我的代码是 1.1 -> 1.2 -> 1.3 这样执行,他的代码是 2.1 -> 2.2,是通过一个状态判断到底走哪个逻辑的,结果他一改,把逻辑入口给改了,所有逻辑全部都走 2,也就是永远走不到 1 的逻辑了,这种情况我真的没有办法控制逻辑了 至于第二个问题,我说的只是冰山一角,我对代码是非常宽容的,一般只要正常运行用例通过都 OK,可是这种代码,完全就是地雷,你永远不知道调用这个函数有什么后果 |
10 micean 2021-08-04 14:48:23 +08:00 好像我接手的那位,尤其是第二点,令人记忆深刻 |
![]() | 11 3dwelcome 2021-08-04 14:54:48 +08:00 via Android 明显是模块责任没划分好,为什么要共同改一个模块呢?把大模块分开,每人只改自己那部分的多好。 |
![]() | 12 shapl 2021-08-04 14:54:52 +08:00 还是按模块划分吧。说好尽量别碰对方代码。 |
![]() | 13 woomly 2021-08-04 14:58:11 +08:00 他在 helper 中加了自己写的一个 IsXXX() bool 方法,返回值居然和函数名称是相反的,然后调用的时候全部都反向判断 ------------------------------------------------------------------------ 简直气炸! |
![]() | 14 sqfphoenix OP @3dwelcome 这个确实,当时的背景是我手上堆了一堆需求做不完,只能让他写了,结果这块代码现在就是永远的痛 |
15 erlking 2021-08-04 15:00:12 +08:00 ![]() 多大点事,默默的重命名为 isNotXXX 完事 |
16 scxiazi 2021-08-04 15:08:37 +08:00 你见过只会写单表增删改查的吗, 让他提供接口就说业务入侵了 |
![]() | 17 zcfnc 2021-08-04 15:34:57 +08:00 我已经麻了 我甚至还有写方法名带数字的同事 他还是我的领导 你敢信? |
![]() | 18 banmuyutian 2021-08-04 15:37:50 +08:00 ![]() @zcfnc 这事我也干过,用'2'代替'to' |
![]() | 19 LowBi 2021-08-04 15:38:50 +08:00 via Android ![]() 一个人写项目自由自在,虽然会累会很忙 |
![]() | 20 czzhengkw 2021-08-04 15:41:32 +08:00 模块拆解+单元测试+代码 review 改代码可以,几百个测试全部能跑通,pr 才能合并进来 |
![]() | 21 darksword21 PRO @zcfnc 我也干过 2 4 |
![]() | 22 zcfnc 2021-08-04 16:01:40 +08:00 |
![]() | 23 mrxun1998 2021-08-04 16:02:39 +08:00 不敢点进来,怕你说的是我。 |
![]() | 24 Shook 2021-08-04 16:12:27 +08:00 之前我写的分页组件,计算当前页的算法有点问题。 我后面搞别的项目去了,接手我项目的同事因为老有分页问题被骂了好多次。 偷偷看他们项目的接口文档,发现 start 是从 0 开始的,我的算法是从 1 开始算的。 |
26 ALVC666 2021-08-04 17:44:35 +08:00 代码和人 有一个能跑就行[Doge] |
![]() | 27 zhuangjia 2021-08-04 17:46:16 +08:00 还是要加注释 |
![]() | 28 lizenghui 2021-08-04 17:48:40 +08:00 哈哈哈 楼主太纠结 This is just a job |
29 leafre 2021-08-04 17:50:59 +08:00 模块继续细分 |
![]() | 30 rainymoring1995 2021-08-04 17:59:09 +08:00 ![]() 不想干就走呗,贼烦对同事指手画脚的,你又不是直系领导 |
31 fengfuliu 2021-08-04 18:01:08 +08:00 @banmuyutian 这个用法还好吧 我看到很多出名的库也是这样的 |
![]() | 32 lzjamao 2021-08-04 18:23:26 +08:00 你同事工作方式有问题。 改别人代码逻辑,最好找负责过该处的同事商量好再改。 |
![]() | 33 feeeei 2021-08-04 18:28:44 +08:00 1. 分工的时候尽量避免特别密集的代码交叉,尽量同期需求各自负责各自的 2. 推 Code Review,开发需求强制要求拉新分支,合并分支强制走 Review,同事 Review 不通过不给合并 |
![]() | 35 dongdongdong 2021-08-04 18:56:31 +08:00 我了 |
![]() | 36 SjwNo1 2021-08-04 20:02:31 +08:00 如果你是 reviewer 的话,不改就不给合,如果你不是的话,好像没啥办法 |
37 wisetc 2021-08-04 22:54:22 +08:00 via iPhone 你们约定一下子,以及讲讲这么做为什么好,以及对他也好,用权威的客观的主流观点代替自己说话,告诉别人你的边界,以及他的边界,避免相互影响相互伤害,否则兵戎相见也不好看。 |
![]() | 38 wisetc 2021-08-04 23:04:42 +08:00 via iPhone 有些人水平比较低也不尊重人,这种人还可能你躲也躲不过,讲道理还不一定听,哪你岂不是很难受?怎么办呢?要么建墙阻隔侵扰,要么交流到达彼此同化,要么强迫把人家赶走,你觉得哪种更好? |
![]() | 39 lululau 2021-08-04 23:12:30 +08:00 ![]() 个人经验:只要是你俩共同开发的任务,把他的活都干了; 多干就是少干,你不管他的,可能得陪他一块加班,你多干了可能反而不需要加班 |
![]() | 40 pengtdyd 2021-08-05 03:56:07 +08:00 这就体现一个人写一个模块的好处了 |
![]() | 41 Perry 2021-08-05 06:55:22 +08:00 via iPhone 一看就是测试都没有 |
43 steptodream 2021-08-05 08:46:57 +08:00 ![]() 可能会有人看到你的代码也是一样的感觉 |
![]() | 44 kiritoxf 2021-08-05 08:51:21 +08:00 我有个同事还不如你这个同事…… 工作三年了编码能力和学习能力像实习生一样 关键是也得一起合作,唉 |
![]() | 45 66beta 2021-08-05 09:19:36 +08:00 一遍跟前同事吐槽,一遍擦屁股,还能怎么办... |
![]() | 46 entro 2021-08-05 09:25:06 +08:00 建议反馈给领导,理由是影响项目开发进度 |
![]() | 47 Kimen 2021-08-05 09:37:39 +08:00 世界是有层次的,建议跑路 |
![]() | 48 tonzeng 2021-08-05 09:38:22 +08:00 淦他娘草鸡掰 |
49 jiayong2793 2021-08-05 09:39:40 +08:00 向项目经理反馈,请求让他做独立模块 |
50 piloots 2021-08-05 09:42:29 +08:00 不敢点进来,怕你说的是我。 |
![]() | 51 gulullu 2021-08-05 09:45:16 +08:00 不敢点进来,怕你说的是我。 |
![]() | 52 94 2021-08-05 10:00:25 +08:00 ![]() @rainymoring1995 #30,屎山就是这样出来的.... [Dev_1] 随性开发,到最后改不动了直接走人,[Dev_2] 接手直接脑溢血送 ICU,[Dev_3] 接盘重构。 |
![]() | 53 balezhang 2021-08-05 10:30:25 +08:00 不敢点进来,怕你说的是我。 |
![]() | 54 Brentwans 2021-08-05 10:31:54 +08:00 1.上策,尽快溜掉,避免和他合作,省时省力。 2.中策,让直接领导知道并认同你的看法,让领导去沟通。就算沟通无果,后面也好甩锅。 3.下策,你说沟通无果。那首先划分好模块,但是你们是一个功能,唇亡齿寒吧。加强单测确保功能,只要他的功能没问题,屎山又奈你何。 4.地下室策。大哥喝茶,你的功能我帮你写 |
![]() | 55 coderluan 2021-08-05 10:33:02 +08:00 职场上, 所有同事的问题, 都是领导的问题, 反应上去就完了. |
![]() | 57 wupher 2021-08-05 10:39:23 +08:00 ![]() 我之前也碰到过类似情况。 当时是眼不见心不乱,反正能跑,我就不管,而且也是临时帮忙。 后来他离职了,这块代码在检查中发现,到处是各种匪夷所思的实现。比如明明在外面查询一次即可获取得的数据库开关属性,结果在 for 循环中每次都再查询一遍……不使用诸如对象或者 VO,而是使用 map 直接各种插入,而取的时候又完全不管可不可能为空。层级封装就更离谱。 最后和产品商量,通过某次界面改版直接把他原来的代码功能全废弃掉了,代码留在原地,添加注释引以为教训。 但从头管到尾,貌似也不好。 不过,我还是觉得 You are not your code. Be kind to coder, not to the code. 代码写的烂,但不意味着就是坏人。 |
![]() | 58 kop1989 2021-08-05 10:41:17 +08:00 @ZzFoo #56 谁规定 isXXX,必须 true 就是 yes (是),false 就是 no (不是)了? 英语语境与汉语语境的“是”与“不是”往往是相反的。 |
![]() | 60 fareware 2021-08-05 11:04:41 +08:00 当觉得周围都不如自己时,那就换一个更高的地方,来证明之前他们真的不如自己。 |
61 goodboy95 2021-08-05 11:28:59 +08:00 @kop1989 什么情况下汉语英语的“是”与“不是”相反,举几个例子吧,我自己是想不太出来,唯一能想到但又特别牵强的就是“Don't you know”这种带 not 的疑问句 |
![]() | 62 Yc1992 2021-08-05 12:08:19 +08:00 review 直接写 comment 啊,只要你不尴尬,尴尬的就是他 |
![]() | 64 comoyi 2021-08-05 13:37:00 +08:00 让他全部改回来 |
65 Paaranoia 2021-08-05 13:48:57 +08:00 跟楼主有同样的感受,分享下我的经历 我写了一个,根据版本号检查更新的逻辑 新来的同事,改了我的代码,把一个“1.0.0”这样的字符串用 Integer.parseInt()转换 导致 App 上线以后,所有检查更新都崩了 我当时血压直接就上来了 |
![]() | 66 z740713651 2021-08-05 13:53:23 +08:00 python 的话写个 typing? 就有理由告老板了 |
![]() | 67 Felldeadbird 2021-08-05 13:54:01 +08:00 代码隔离不到位。或者是,你的业务对方不熟悉。没有留下文档或注释。团队肯定有水平高低的,让管事的来规划好代码开发 |
![]() | 68 est 2021-08-05 13:54:24 +08:00 生气归生气,你应该做一个单元测试把自己的方法守住。别人改的话测试直接不让通过。 |
![]() | 69 free9fw 2021-08-05 14:02:21 +08:00 离职吧,迟早会被祸害 |
![]() | 70 zzx0403 2021-08-05 14:08:07 +08:00 之前见过各种简写的function 本来简写 fun,他来个 fun 。teacher 硬是要简写成 tea,各种简写看都看不懂 |
![]() | 71 sexyback 2021-08-05 14:11:05 +08:00 跟同样是应届生的同事一起写一个模块,像 status 这种状态标志,有人 int8 有人 int32 有人 int,真的难顶 |
![]() | 72 elevioux 2021-08-05 14:16:04 +08:00 再包装一下 notXXX(){return !isXXXX();} |
![]() | 73 rrZ2C 2021-08-05 14:56:18 +08:00 @banmuyutian 呀 学到了,长一点的方法名真讨厌写 To |
![]() | 74 nicetoomeetyou 2021-08-05 15:00:30 +08:00 看描述,应该是不属于一个部门和领导的同事。所有反映是没啥用的。 这时候建议听下歌,https://www.kuwo.cn/play_detail/236015 |
![]() | 75 hatsuyuki 2021-08-05 18:03:20 +08:00 @zzx0403 Rust 里定义函数的关键字是 fn,Kotlin 里定义函数的关键字是 fun,Go 里定义函数的关键字是 func,这样来看的话 function 简写成 fun 也不是不能接受 |
![]() | 76 zzx0403 2021-08-05 18:13:34 +08:00 @hatsuyuki 主要是我上次看到了他自己的项目 目录名称 funny1 funny2 funny3 当时我真的蚌埠住了 |
77 zm8m93Q1e5otOC69 2021-08-05 21:46:53 +08:00 via Android 帮他把代码改对 |
![]() | 78 cloudfstrife 2021-08-06 10:28:27 +08:00 不敢点进来,怕你说的是我。 |
79 NoDocCat 2021-08-06 15:12:14 +08:00 不敢点进来, 怕你说的是我. https://imgur.com/a/BcuKMdq |
80 TeaPolyphenols 2021-08-09 14:44:16 +08:00 最后我给他重写了.. |