如何与代码风格很差(个人觉得)的同事共事? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MoriartyCy
V2EX    职场话题

如何与代码风格很差(个人觉得)的同事共事?

  •  1
     
  •   MoriartyCy 2021-06-11 11:10:12 +08:00 5571 次点击
    这是一个创建于 1632 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近跟公司里的一位老同事一起开发,同事工作了很多年了,在公司也是待人随和,很多人很喜欢他,并且他还经常主动担较多的工作量。前几天跟他一起做一个新项目,本来以为会是一个愉快的过程,结果上来看到代码就傻眼了:

    1. 不写任何注释;
    2. 不写常量,不写枚举,全都是魔鬼数字魔鬼字符;
    3. if 套娃;
    4. 方法套方法,一行代码三四个方法套娃,能占两个屏幕,300 多个字符;
    5. 喜欢不同接口很多逻辑都写一个方法里面(一个接口只提供一个对外的方法,这个方法常常能有十几个参数),再通过 if 区分不同逻辑,其名曰:工厂模式;

    可能我有些强迫症,code review 的时候看他的代码极其痛苦。跟这位同事也提过两次,他就笑着说改一改改一改,到最后也没改。

    所以说你们在工作中遇到这种代码风格很差的同事一般如何相处呢?

    42 条回复    2021-06-23 00:00:47 +08:00
    x86
        1
    x86  
       2021-06-11 11:12:46 +08:00
    一看就是新手,老手一看就走了
    jjwjiang
        2
    jjwjiang  
       2021-06-11 11:15:07 +08:00
    不出 bug,性能没问题就不管

    提前沟通好,需要修改他的部分只能由他自己改,让我改因为我看的费劲还容易改错
    Asuka0947
        3
    Asuka0947  
       2021-06-11 11:17:07 +08:00
    他还经常主动担较多的工作量,这样的同事我也想有;如果说他的代码风格严重影响了你的工作效率,那就和他说说呗,不行就只能写一行问一行,他不嫌烦就好,不是很影响你的话我觉得可以不管,毕竟他的工资不是你发,你的工资不是他发,反正我是秉承能跑就行的原则,代码差有时候是一个甩锅的好借口。
    kop1989
        4
    kop1989  
       2021-06-11 11:17:37 +08:00
    其实很简单,问自己一个问题:“你俩有利益冲突么?”
    如果没有,与你何干?
    如果有的话,趁早解决。
    jay4497
        5
    jay4497  
       2021-06-11 11:25:41 +08:00
    打不过就加入 doge;
    plainboiledwater
        6
    plainboiledwater  
       2021-06-11 11:32:46 +08:00   1
    和他约定好模块的接口,输入输出定清楚,然后如果有性能要求的话,定好 benchmark,剩下里面的实现就是他的黑盒,只要逻辑 OK 以及性能 OK,怎么实现都行。
    就像和你合租的人只要公共空间保持整洁,他卧室满地猫毛全是灰衣服搭在空调上也不影响你对不对?
    Rwing
       7
    Rwing  
       2021-06-11 11:34:29 +08:00
    Sonar 走起啊,不符合规范不让 merge
    nxforce
        8
    nxforce  
       2021-06-11 11:55:12 +08:00
    我的建议是不管。。。

    那些代码你就别管了,摆正心态,就当在一坨屎上面加上自己拉的,反而我建议你学一下那家伙的处事之道。。。

    以后等自己做主程的时候再讲究吧。
    rioshikelong121
        9
    rioshikelong121  
       2021-06-11 11:57:58 +08:00
    向老同事学习
    YadongZhang
        10
    YadongZhang  
       2021-06-11 12:03:45 +08:00 via Android
    我们组就我代码风格差,而且动不动改动就超过 10 个文件
    renmu123
        11
    renmu123  
       2021-06-11 12:06:46 +08:00 via Android
    他差归他差,不要动他的代码就就可以了
    futou
        12
    futou  
       2021-06-11 12:10:25 +08:00   3
    如果公司有统一风格,那么锅在你同事身上。如果公司没统一,那和你同事没任何关系。

    ps. 一直认为代码有优劣,但是代码风格没有优劣。毕竟代码本质是给机器看的,而不是给人看的。只不过由于多人协作,不可避免的有他人参与,就出现了对风格优劣的评价。
    qiaobeier
        13
    qiaobeier  
       2021-06-11 12:50:25 +08:00
    用些风格检查工具呗
    addenvex
        14
    addenvex  
       2021-06-11 12:52:55 +08:00
    我也遇到过、我能改的、直接帮她改掉、不能改的、也没办法
    ZhaoHuiLiu
        15
    ZhaoHuiLiu  
       2021-06-11 13:05:34 +08:00 via Android
    你这还算好的了,如果你负责一个研发项目。你说需要人手,公司给你一个啥都不会的人,你要是赶他走就成了光棍司令,教他东西嘛又教不会,怎么办呢?本人中专学历,公司除了给的工资可观,就没任何优势。既然自己强,为何不多些包容,你要调用他的代码,你根据自己习惯封装一层不就好了。不要逃避也不要当光棍司令,好好工作。
    buffzty
        16
    buffzty  
       2021-06-11 13:13:00 +08:00
    不写注释不算代码风格差吧 方法名 变量名就是注释 能望文生义的代码再写注释就是冗余
    BingoXuan
        17
    BingoXuan  
       2021-06-11 13:16:42 +08:00 via Android
    我也想一个 API 一个功能,奈何甲方就喜欢一个 API 干 n 多事
    tongqe
        18
    tongqe  
       2021-06-11 13:35:26 +08:00 via Android
    有啥问题,你刚毕业?
    nbin2008
        19
    nbin2008  
       2021-06-11 14:56:42 +08:00
    改掉自己的强迫症
    simonlu9
        20
    simonlu9  
       2021-06-11 15:02:40 +08:00
    之前待过公司是先产品评审,评审的时候开发也吧每个接口的伪代码写上去,大家看合不合理 ,这样之后开发也就是安卓这份标准来开发,前期可能浪费挺多时间,但是可以避免你上面说的那种情况
    3dwelcome
        21
    3dwelcome  
       2021-06-11 15:10:03 +08:00   1
    @ZhaoHuiLiu "公司给你一个啥都不会的人,你要是赶他走就成了光棍司令,教他东西嘛又教不会,怎么办呢?"

    还是光棍司令好,你为了向下兼容,势必会降低自己代码水准,来适配同事水平。

    时间一长,最后你会发现自己也变菜了。
    94
        22
    94  
       2021-06-11 15:27:51 +08:00
    Code Review 不是一起看?你自己审查代码来处理合并的话,打回去让他重改,打回去两次他就知道了,首先就是要有一个标准,如果只是按照你的喜好肯定不合适,取一个公司的标准就好了,然后大家就按照这个标准来。

    if 套娃这个没办法,毕竟每个人都有自己的 coding 习惯。
    ZhaoHuiLiu
        23
    ZhaoHuiLiu  
       2021-06-11 16:33:37 +08:00 via Android
    @3dwelcome 哥们,你可能工作没多久,觉得在公司只要写代码,就天下太平了什么事都没有。不会有人找你帮忙,不会有人要你和客户沟通,不会有任何人打扰你造飞机造火箭。哥们适合当敢死队一员,为后方部队开辟道路。可惜小弟怕死,想有个肉盾挡子弹,哪怕是个人傻子也行,只要子弹打不打我,我就万事无忧。
    justforlook44444
        24
    justforlook44444  
       2021-06-11 16:37:28 +08:00
    他的代码差跟你有什么关系呢,个人负责自己的代码;
    如果是需要协作,制作一个 coding style 规范,可参考 huawei,谷歌的。
    Navee
        25
    Navee  
       2021-06-11 16:45:06 +08:00
    入参出参控制好,细节你管不了的,林子大了什么鸟都有,除非你说了算
    3dwelcome
        26
    3dwelcome  
       2021-06-11 16:52:19 +08:00
    @ZhaoHuiLiu 问题是同事烂代码以后出问题了,还是你这个项目负责人的锅啊。

    两个人水平差很多,你带一下他可以,共事就只能自找麻烦。
    windyCity1
        27
    windyCity1  
       2021-06-11 17:07:33 +08:00
    我可能就是同事眼中“代码风格很差”。。。。

    入职以来一直在改变自己的编码习惯。。。。。
    windyCity1
        28
    windyCity1  
       2021-06-11 17:08:18 +08:00
    @windyCity1 #27 每次 code Review 后都要花一些时间改自己一些代码。。。。。
    ZhaoHuiLiu
        29
    ZhaoHuiLiu  
       2021-06-11 17:19:49 +08:00 via Android
    @3dwelcome 你要这样想就没办法,本来别人就是骡子专门背锅的,你驴子吃草好好的,非要主动当骡子使,一起背锅又何必。工作只是为了赚钱,出问题了肯定会开会找问题,问题出在谁身上,那就找谁就是了。编程这玩意就是要有足够的应付力,免疫一切毒害和迫害,不要因为一只毒蛤蟆挡了路,就绕道而行走远路。多去看看开拓思维书籍吧,写程序和写书又有何区别
    3dwelcome
        30
    3dwelcome  
       2021-06-11 17:26:40 +08:00
    @ZhaoHuiLiu 说到底,我还是没办法接受,糟糕的代码进来污染我的项目库。

    因为代码我是需要长期维护的,don't touch my code,这是原则问题。

    当然如果同事写的模块有足够的边界,相互调调 API,那也没什么。可是你改我代码,我改你代码,绝对不能忍。
    ZhaoHuiLiu
        31
    ZhaoHuiLiu  
       2021-06-11 17:31:39 +08:00 via Android
    @3dwelcome 你要是真牛 b,承包这个项目不就行了,要求公司给你多少钱个月。我能一个人完成就一个人完成,不能完成部分外包出去让别人实现,别人完成了自己重构成符合自己项目风格的代码。这样妥妥的当个包工头不好吗?我就怕你大事干不了,小事又爱插手,倒头来钱少事多,活受罪。。。
    openmm
        32
    openmm  
       2021-06-11 17:37:31 +08:00
    代码风格显而易见的差 这么多人还建议不要去提 美曰其名处世之道 等你自己和这种人合作你就知道多痛苦了 提出来也是为他好 好的代码利己利他 真就说了几次也不听 那没办法了 只能受着了
    ZhaoHuiLiu
        33
    ZhaoHuiLiu  
       2021-06-11 17:43:12 +08:00 via Android
    @openmm 你最好不要去管别人代码风格,毫无意义,只要别人代码能跑那就行,自己干好自己的,维护这东西本身毫无价值,代码好坏看重构次数,说白了就是不断提炼才能出精华。多学学处世之道,和百毒不侵之术,应付一切问题,尽量用嘴不用手,不要三言两语不合就动手很蠢的。
    liuidetmks
        34
    liuidetmks  
       2021-06-11 17:44:38 +08:00 via iPhone
    @buffzty 望文生义 好像不是这么用的哈哈,具体该用什么成语,我也不知道
    3dwelcome
        35
    3dwelcome  
       2021-06-11 17:46:05 +08:00
    @ZhaoHuiLiu 这和牛不牛 B 没关系,项目会随着时间推移越来越复杂,代码变多后,我需要的是对代码的掌控力。

    不想因为查一个 BUG 而加班,在糟糕的代码里翻大半天,绝对是一件很痛苦的事。

    所以我就希望切断污染的源头。和同事合作开发可以,各管各的模块,别动我的代码。
    openmm
        36
    openmm  
       2021-06-11 17:51:29 +08:00
    @ZhaoHuiLiu 到时候系统出问题 由你自己去改、去调试那部分代码的时候看你还扯处世之道
    ZhaoHuiLiu
        37
    ZhaoHuiLiu  
       2021-06-11 18:02:22 +08:00 via Android
    @openmm 无论前端还是后端都有负责人,你又不是负责人,如果是负责人的话,又不要整天写代码,只要改代码和审核代码就行。就算是工厂流水线,每条流水线都有一两个小组长,小组长拿流水线工人多一点的工资不用工作,谁要上厕所了就顶一下,基本流水线上什么活都会干。我最讨厌的人就是大事干不了,小事爱插手的人。
    KouShuiYu
        38
    KouShuiYu  
       2021-06-11 18:11:36 +08:00
    添加强制检查代码风格的钩子,不合格不许 commit
    miloooz
        39
    miloooz  
       2021-06-12 11:50:19 +08:00
    代码写出来是需要后人维护的,还是希望同事能够改过来,这也是对同事的提升不是。还是看团队氛围、同事性格,如果我看这个人顺眼,我会和他一起推进规范化,标准化,如果是看的不爽的,应该还是会和楼上的老哥们说的一样避不做声。等遇到老哥们说的钉之后,再如老哥们说的做也行。
    zgl263885
        40
    zgl263885  
       2021-06-14 12:10:00 +08:00 via iPhone
    从 python 之禅里面的一句话来评判的话,你这个同事要么是菜,要么是坏:
    代码可读性很重要。
    Chieh
        41
    Chieh  
       2021-06-15 22:32:20 +08:00
    看描述血压上来了,我也遇到过这种人,后来我就懒得管了,把自己的那块写好
    Xavier08
        42
    Xavier08  
       2021-06-23 00:00:47 +08:00
    我也想问,怎么写才算一个好的代码风格,需要常看开源还是学习设计模式?我是前端的
    关于     帮助文档     自助推广系统     博客     API   FAQ     Solana     820 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 22:22 PVG 06:22 LAX 14:22 JFK 17:22
    Do have faith in what you're doing.
    ubao msn 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