V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sponsored by
LinkedIn
不坐班的神仙工作 · 去任何你想去的地方远程,赚一线城市的工资
2000 个不用出门 Social 的全球远程工作,帮助 V2EX 的小伙伴开启全新的工作方式。
Promoted by LinkedIn
herich
V2EX  ›  程序员

反感同事写的代码怎么办?

  •  
  •   herich · 2020-01-21 17:44:51 +08:00 · 17284 次点击
    这是一个创建于 980 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不谈技术好坏,就编码风格来说。和同事协同开发,同事特别喜欢搞一些封装,整个项目前期主要是他一个人撸的,项目中有不少他自己写(封装)的库, 20200121173735.png 20200121173820.png

    本人有一些代码洁癖, 能用内置库和官方库解决问题的绝不使用第三方库尤其是个人的库,项目中处处都是 zxxx 这些代码,感觉被 qj,比较反感这种风格,怎么破?

    141 条回复    2020-01-29 12:43:49 +08:00
    1  2  
    cwjokaka
        1
    cwjokaka  
       2020-01-21 17:46:21 +08:00
    互相重构 (狗头)
    herich
        2
    herich  
    OP
       2020-01-21 17:52:06 +08:00
    @cwjokaka 重构的话业务量比较大
    ourleven
        3
    ourleven  
       2020-01-21 17:52:35 +08:00 via iPhone
    zstrimg 什么鬼
    gam2046
        4
    gam2046  
       2020-01-21 17:53:13 +08:00
    当然是要么接受,要么走人。

    代码这种东西,还是为业务服务的。其实并没有人关心你的编码风格,实现。

    当然,如果你实在是工作不饱和,可以慢慢的改起来。但真的没啥意义。你去工作也是为了钱,而不是为了传播你的编码理念。
    Justin13
        5
    Justin13  
       2020-01-21 17:54:11 +08:00 via Android   ❤️ 6
    别的不说,你这个🐴和没打一样,搜一搜 repo 就知道是谁了。。
    ourleven
        6
    ourleven  
       2020-01-21 17:54:51 +08:00 via iPhone
    只要接口规范,实际上这么做挺好啊。如果哪个模块想替换了,直接把这个库改掉。总比用了某些号称高大上的库后期新增或替换接口都不行容易多了
    hpeng
        7
    hpeng  
       2020-01-21 17:55:30 +08:00 via iPhone
    @ourleven 我怀疑是给人搜的吧,无聊的我搜到了仓库了。lz 打码白费了
    zarte
        8
    zarte  
       2020-01-21 17:56:28 +08:00
    有的时候是不得以啊,需要改别人的库代码啊。replace 成自己本地,公用库不改其他项目也许不需要用到这些改变的地方。
    YakuMioto
        9
    YakuMioto  
       2020-01-21 17:58:02 +08:00 via Android
    给我我就爆炸了…,这不是闲的么…
    snowfuck
        10
    snowfuck  
       2020-01-21 17:58:16 +08:00
    把私有库迁移到公司下面嘛
    tyrealgray
        11
    tyrealgray  
       2020-01-21 18:00:11 +08:00   ❤️ 1
    公司的东西就这么让他封到自己的库里?
    herich
        12
    herich  
    OP
       2020-01-21 18:02:29 +08:00
    @gam2046 一看就是摸鱼大佬...要是他一个人开发他怎么写我当然不关心,可这个项目是要一起开发的呀
    cccssss
        13
    cccssss  
       2020-01-21 18:03:24 +08:00
    一位不愿被透露姓名的 zlyuancn zhangfan 同学
    这种代码风格除了命名可能不是公司名称之外,做法很好啊,官方或者内置库封装了一些工具项目,我感觉没啥毛病
    而且人家换工作也可以有的说,总比自己写一堆 util.go 之类的强吧
    herich
        14
    herich  
    OP
       2020-01-21 18:04:53 +08:00
    @hpeng 抱歉,打码总比没打好,没有故意让人搜。。。这些库就他自己一个人在用,基本都是一些二次封装
    YakuMioto
        15
    YakuMioto  
       2020-01-21 18:06:01 +08:00 via Android
    @herich 一起开发,可以给他提 pr ? emmm.
    herich
        16
    herich  
    OP
       2020-01-21 18:06:02 +08:00
    @ourleven 应该是封装的一个字符串转图片的东东...
    LinYa
        17
    LinYa  
       2020-01-21 18:07:28 +08:00
    不应该依赖私人的库,万一哪天他删除了你咋办。。。
    herich
        18
    herich  
    OP
       2020-01-21 18:12:15 +08:00
    @cccssss 如果某一天他离职了、把 github 上自己的项目删了或者某个库有一些隐藏 bug,谁来维护?后来的同事怎么接手这个项目?
    manami
        19
    manami  
       2020-01-21 18:13:16 +08:00 via Android
    你同事是个聪明人。他的代码渗入了公司的血液,握住了公司的命脉。公司应该不敢辞退他,哪天他恼火了删掉自己的仓库不再维护……
    herich
        20
    herich  
    OP
       2020-01-21 18:13:52 +08:00
    @LinYa 是的,开始甚至还依赖了他的私人仓库...不过后来给改了
    ssynhtn
        21
    ssynhtn  
       2020-01-21 18:14:10 +08:00 via iPad   ❤️ 4
    这种人我也碰到一个,而且他去了阿里
    这叫“产出”,是一种面向跳槽的编码方式
    cccssss
        22
    cccssss  
       2020-01-21 18:15:31 +08:00
    @herich 那是交接流程的问题,这个库强制被公司征用呗。我只是说这种封装起来用的做法没问题
    herich
        23
    herich  
    OP
       2020-01-21 18:17:10 +08:00
    @tyrealgray 我觉得这样很不妥,公司项目的代码至少得上传到公司的账号和公司的 git 仓库吧
    tyrealgray
        24
    tyrealgray  
       2020-01-21 18:17:44 +08:00
    @LinYa
    @manami npm 的库不能删除
    tyrealgray
        25
    tyrealgray  
       2020-01-21 18:18:34 +08:00
    哦,看错了,直接发在 github 上的?
    tyrealgray
        26
    tyrealgray  
       2020-01-21 18:19:38 +08:00
    @herich 对,这样很不妥
    herich
        27
    herich  
    OP
       2020-01-21 18:20:08 +08:00
    @ssynhtn 这种自己的封装也就自己写起来爽吧
    herich
        28
    herich  
    OP
       2020-01-21 18:21:48 +08:00
    @ourleven 整个项目差不多十多个这样的库,以后项目规模大了要填不少坑吧?谁来接手这样的代码?
    herich
        29
    herich  
    OP
       2020-01-21 18:23:20 +08:00
    @tyrealgray 嗯,直接引用的 github 上库
    tyrealgray
        30
    tyrealgray  
       2020-01-21 18:26:31 +08:00
    如果是能被删除,那这个就不是代码风格的问题的,是这个库应该归公司所有。还是提醒一下你同事让他把代码放在应该放的地方吧。不然以后吃官司吃亏的是他自己
    tt67wq
        31
    tt67wq  
       2020-01-21 18:27:12 +08:00   ❤️ 1
    公司的代码又不是你儿子,有啥好介意的,有人喜欢操心还不错的,只要工资有,别说用垃圾库,用 php 都行
    herich
        32
    herich  
    OP
       2020-01-21 18:33:36 +08:00   ❤️ 2
    @tt67wq 这是一种工作态度吧,按理说只要工作任务完成了,出现问题及时解决,业务能正常运行就行了, 管他代码写成什么样子。。。自己要参与到这个项目来,和他的一些编码习惯和观念不一样,而且有交集,肯定有介意呀,一个寝室的同学生活习惯不一样还可能有矛盾呢
    Muninn
        33
    Muninn  
       2020-01-21 18:34:33 +08:00
    封装没问题,要协作的话放公司的组织下啊,员工用自己的私有库不妥。
    如果他是 boss,那放他私人那也没啥问题,让他加你当协作者就完了。
    在 google 带头下,golang 项目很多公司都有个 x 的项目,把各种封装和工具往进扔。
    woodfish
        34
    woodfish  
       2020-01-21 18:40:23 +08:00   ❤️ 1
    商业互吹一下:张哥代码太棒了,建议提到部门公司级别,基于公司名称商帮有限公司,起名*bstring, s*cache,等等
    MissThee
        35
    MissThee  
       2020-01-21 18:41:14 +08:00 via iPhone
    不封装,这个帖子估计就改成,很反感同事写的代码,功能块都不封装一下,代码文件一大坨
    herich
        36
    herich  
    OP
       2020-01-21 18:56:04 +08:00 via Android
    @MissThee 封装无可厚非,但有的东西明明有优秀的三方库,为什么要再封装成自己库?如果参与这个项目同事都按自己喜好来封装成自己的方法接口,项目的可维护不太好吧?这是编码习惯不同产生的矛盾。
    zlfoxy
        37
    zlfoxy  
       2020-01-21 18:57:23 +08:00   ❤️ 1
    https://github.com/zlyuancn
    楼主你这码打的毫无意义呀。。。。
    herich
        38
    herich  
    OP
       2020-01-21 18:59:30 +08:00 via Android
    @zlfoxy 低调,低调,万一同事也在 v 站摸鱼呢🤣
    Mutoo
        39
    Mutoo  
       2020-01-21 18:59:37 +08:00   ❤️ 1
    @zlfoxy 粘包警报
    gamexg
        40
    gamexg  
       2020-01-21 19:02:02 +08:00 via Android
    封装很正常吧。
    一些常用功能标准库、第三方库没有的功能不封装每次都打 x 行真没意义。
    不过封装到自己的仓库就有些问题了。
    tt67wq
        41
    tt67wq  
       2020-01-21 19:03:47 +08:00
    @herich 如果代码正常运行,而且封装也没太大的问题,只是你个人感觉不好,那有问题的是你啊
    katsusan
        42
    katsusan  
       2020-01-21 19:07:05 +08:00
    新建个 project 把他的私有库 fork 过去,依赖都改成指向这个公共 project 下的项目,可以防止删库跑路这样的行为 /狗头.
    herich
        43
    herich  
    OP
       2020-01-21 19:15:42 +08:00 via Android
    @katsusan 他可能会改某些接口或者功能,fork 过去还要同步更新才行

    @tt67wq 要是写在公司的仓库我没意见,拿公司钱为公司贡献代码嘛,这样大量引用自己私人仓库里的东西隐患挺大的
    angith
        44
    angith  
       2020-01-21 19:22:27 +08:00 via Android
    那你一个人都包了呀
    dapang1221
        45
    dapang1221  
       2020-01-21 19:23:14 +08:00
    @zlyuancn 你同事吐槽你代码(试试有没有
    herich
        46
    herich  
    OP
       2020-01-21 19:25:22 +08:00 via Android
    @angith 一言不合就重构吗,要是自己的编码风格同事不喜欢呢?互相重构吗🤣
    katsusan
        47
    katsusan  
       2020-01-21 19:27:26 +08:00
    @herich 改的话就改这个公共仓库,在公司里的产出原则上属于公司,要不让他把 github 账号交出来也行。
    wd
        48
    wd  
       2020-01-21 19:28:55 +08:00 via iPhone
    这明显你们公司的问题,在公司写的代码版权都是公司的,你们公司允许随意开源吗?
    hyy1995
        49
    hyy1995  
       2020-01-21 19:32:06 +08:00   ❤️ 1
    我看了下他仓库,一堆自己封装的东西,项目里面这么用,有够自恋。你们没技术总监?他这样用自己的库,那这个项目他走之后,谁敢接啊
    xy90321
        50
    xy90321  
       2020-01-21 19:32:19 +08:00 via iPhone
    反感就去推倒重来,又懒得重来那就自己默默承受,很简单的道理
    pursuer
        51
    pursuer  
       2020-01-21 19:59:52 +08:00
    我希望和我合作的人封装好(指 IDE 比较强大的项目且封装代码层次清晰命名准确的)有不懂的开着 IDE 一步步跟过去就明白了,封装得好的他就是驼峰下划线大括号换行不换行混用我都不介意(除非命名空间污染)。
    herich
        52
    herich  
    OP
       2020-01-21 20:39:35 +08:00 via Android
    @wd 公司规模不大,这个项目一共就两三个人开发,还没有什么规范的

    @hyy1995 这确实是个大问题,自己写的爽,别人接手火葬场
    @xy90321 我觉得既然是一个共同开发的项目,虽然暂时没有文档规范,但是这公司的项目也写得太 personal 了吧,不能愉快合作呀
    DJQTDJ
        53
    DJQTDJ  
       2020-01-21 20:41:50 +08:00
    如果公司的库封到自己库里,那么律师函警告
    UsherOu
        54
    UsherOu  
       2020-01-21 20:56:20 +08:00
    要么重构,要么忍,风格这玩意很难改成统一的
    Reficul
        55
    Reficul  
       2020-01-21 20:58:10 +08:00
    大不了 fork,删除又怎么样? 会封装总比不封装强,封装了你不爽就按照接口重构一个新的,replace 过去不就完了?
    robertredd
        56
    robertredd  
       2020-01-21 21:00:34 +08:00 via Android
    俺要是老板 看懂了肯定要他改 这不是往公司代码植入其他依赖吗 特别不可靠
    SnailLin
        57
    SnailLin  
       2020-01-21 21:02:16 +08:00
    要我肯定就举报了,公司的代码使用自己的私有库,还公开在 GitHub 上,安全和维护都会有问题。
    blless
        58
    blless  
       2020-01-21 21:26:42 +08:00 via Android
    vendor 啊 固化一下依赖,依赖直接跟着项目走就是了,github 删了你们照样可以用 go.mod replace 慢慢替换嘛
    blless
        59
    blless  
       2020-01-21 21:30:29 +08:00 via Android
    不过说真的,你们这样基本上架构内部用法跟技术栈都可以猜个七七八八。虽然不见得是啥重要信息,不过谁知道哪天出了漏洞啥的。比如你们的 mgo,casbin 之类的
    lasuar
        60
    lasuar  
       2020-01-21 21:44:57 +08:00
    做事方式有问题,这些库得需要维护吧?保证毫无 bug 吗?要维护再给他提 pr ?这不是搞些事情出来在做。
    封装思想是 OK 的,但是应该直接封装在 codebase 里面。
    wangyzj
        61
    wangyzj  
       2020-01-21 22:21:33 +08:00
    重构是一些人的自我表现的过程
    所以经常会看见那种大炮打蚊子的代码
    我就特别烦那种拆的特别碎,埋得特别深的代码
    lbfeng
        62
    lbfeng  
       2020-01-21 22:33:13 +08:00
    他自己写的库都没测试么?
    easonl
        63
    easonl  
       2020-01-21 23:21:32 +08:00
    直接过去打他啊!过去直接对后脑勺打:“你他喵的搞这种看不懂来路的库,想死吗?正扑街!”
    ChiangDi
        64
    ChiangDi  
       2020-01-22 00:20:23 +08:00 via iPhone
    他一离职删自己 GitHub 的仓库你们就凉了。
    serpent
        65
    serpent  
       2020-01-22 00:30:06 +08:00
    说点题外话,你要不先打听打听,他是不是老板小舅子?
    drackzy
        66
    drackzy  
       2020-01-22 00:41:31 +08:00
    他这 github repo 一变,你司以后部署、升级都会出问题。
    也见到同事喜欢封装 go 造轮子库。
    sonicjam
        67
    sonicjam  
       2020-01-22 00:55:02 +08:00
    @herich #23 上纲上线地说,工作时间写的任何代码,所有权都应该归属于公司;将公司代码上传至公共仓库,属于泄露商业机密没跑了。
    dawn009
        68
    dawn009  
       2020-01-22 02:43:30 +08:00
    @sonicjam #67 未必。如果公司的程序依赖了开源项目,使用中发现了开源项目的 bug 需要提补丁,或者需要修改添加新功能,那么合并进去的补丁代码并不属于公司。
    kwrush
        69
    kwrush  
       2020-01-22 05:36:02 +08:00
    你们导入新的库不经过讨论吗,随便自己就决定了?这样子都能过 code review 吗?
    ericgui
        70
    ericgui  
       2020-01-22 06:07:48 +08:00
    这是不是所谓的 anti-pattern ?
    mikulch
        71
    mikulch  
       2020-01-22 07:24:24 +08:00 via iPhone
    @tt67wq 原来老人家您也喜欢黑 php,狗头
    AngryPanda
        72
    AngryPanda  
       2020-01-22 07:45:00 +08:00 via Android   ❤️ 2
    @tt67wq 就你这吊样还鄙视 php 呢
    Vitta
        73
    Vitta  
       2020-01-22 08:40:43 +08:00 via iPhone
    跟他说一声改到公司仓库下看看这个问题是不是就解决了
    littlebaozi
        74
    littlebaozi  
       2020-01-22 08:48:53 +08:00
    听说过更奇怪的呢,以前同事说,他们有个人代码是左对齐的
    Wao
        75
    Wao  
       2020-01-22 08:53:30 +08:00
    @herich #28 解聘防御式编程模式?
    wsxyeah
        76
    wsxyeah  
       2020-01-22 09:01:01 +08:00 via iPhone
    掺杂私货,赶紧 fork 出来吧
    xiaozizayang
        77
    xiaozizayang  
       2020-01-22 09:09:20 +08:00
    公司流程有问题,你和你同事都没问题
    BryanYue
        78
    BryanYue  
       2020-01-22 09:30:46 +08:00
    不知道 这种 util 类的 封装到自己仓库 有啥意思?
    nianyu
        79
    nianyu  
       2020-01-22 09:31:12 +08:00
    这是把握住了公司的命脉?
    angryfish
        80
    angryfish  
       2020-01-22 09:43:27 +08:00
    人才啊,给了我新的启示
    3img
        81
    3img  
       2020-01-22 09:54:55 +08:00
    作 为一个开发人员,少不了在屎山上翻屎堆
    tyrantZhao
        82
    tyrantZhao  
       2020-01-22 09:59:56 +08:00
    我觉得我找到了新的产出方式,以后跳槽有东西说了
    keymao
        83
    keymao  
       2020-01-22 10:00:28 +08:00
    面向邀功 面向跳槽式的开源项目。

    怎么说呢,感觉没啥用 ....
    Kamiyu0087
        84
    Kamiyu0087  
       2020-01-22 10:02:48 +08:00
    封装库没错,不过不应该放在个人账号下,放公司账号或者公司的 git 仓库下就没问题
    jsjjdzg
        85
    jsjjdzg  
       2020-01-22 10:04:12 +08:00
    这个就是自带私货啊,产出大大的,下一次面试就说公司用的全是我产出的包
    rioshikelong121
        86
    rioshikelong121  
       2020-01-22 10:07:17 +08:00
    放到公司账户下,一起维护。
    ispinfx
        87
    ispinfx  
       2020-01-22 10:07:18 +08:00
    等下同事 Repo 的 issue 里全是 v2 观光团。。
    shuperjolly
        88
    shuperjolly  
       2020-01-22 10:12:45 +08:00 via iPhone
    要么忍,要么滚,没别的。
    cstj0505
        89
    cstj0505  
       2020-01-22 10:16:58 +08:00
    @zlfoxy 我觉得楼主就是来钓鱼的
    no1xsyzy
        90
    no1xsyzy  
       2020-01-22 10:20:51 +08:00
    @wd 显然,没有开源许可证,并没有开源(
    tabris17
        91
    tabris17  
       2020-01-22 10:21:51 +08:00
    第三方库的代码也需要 code review
    azh7138m
        92
    azh7138m  
       2020-01-22 10:30:43 +08:00 via Android
    hhhhh
    这个人还喜欢自己给自己点 star
    Ultraman
        93
    Ultraman  
       2020-01-22 10:36:28 +08:00 via Android
    等一个“我就是那个代码被反感的同事”
    Kontinue
        94
    Kontinue  
       2020-01-22 10:40:07 +08:00
    我也觉得封装挺好的。。。总比我现在这个 spring boot 项目,controller 里几百行业务代码看的舒服。。。
    mouyong
        95
    mouyong  
       2020-01-22 10:40:41 +08:00
    https://github.com/zlyuancn/zcache/blob/master/cache.go

    看了下代码风格,觉得还可以呀?
    azh7138m
        96
    azh7138m  
       2020-01-22 10:52:49 +08:00 via Android
    @mouyong gofmt 一下,大家风格都差不多。。。
    zzcworld
        97
    zzcworld  
       2020-01-22 10:53:04 +08:00
    公司开发的代码不能引用个人的 github,这是常识。除非作者授权公司使用,并且将代码提交到公司的 repo
    mouyong
        98
    mouyong  
       2020-01-22 11:02:01 +08:00
    @zzcworld 讲真,这可能还真不是常识。至少我工作多年,才刚知道。
    zzcworld
        99
    zzcworld  
       2020-01-22 11:12:46 +08:00
    @mouyong 那大家的版权意识可能还需要提高一下。
    sdushn
        100
    sdushn  
       2020-01-22 11:16:32 +08:00   ❤️ 1
    律师函警告?如果工作里用到这些私人仓库,那么大概率会在工作时间修改这些仓库的代码,那么这些私人仓库代码应该归公司所有,他私人公开了这些代码,那么。。。
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4396 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 09:23 · PVG 17:23 · LAX 02:23 · JFK 05:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.