反感同事写的代码怎么办? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
herich
V2EX    程序员

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

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

    不谈技术好坏,就编码风格来说。和同事协同开发,同事特别喜欢搞一些封装,整个项目前期主要是他一个人撸的,项目中有不少他自己写(封装)的库, 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 是的,开始甚至还依赖了他的私人仓库...不过后来给改了
    kx5d62Jn1J9MjoXP
        21
    kx5d62Jn1J9MjoXP  
       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:5 +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
    这是把握住了公司的命脉?
    GBdG6clg2Jy17ua5
        80
    GBdG6clg2Jy17ua5  
       2020-01-22 09:43:27 +08:00
    人才啊,给了我新的启示
    3img
        81
    3img  
       2020-01-22 09:54:55 +08:00
    作 为一个开发人员,少不了在屎山上翻屎堆
    geminikingfall
        82
    geminikingfall  
       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     Solana     908 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 19:38 PVG 03:38 LAX 12:38 JFK 15:38
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86