如何应对一个项目中其他组员写的烂代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
enlight
V2EX    问与答

如何应对一个项目中其他组员写的烂代码?

  •  1
     
  •   enlight 2020-02-27 08:48:13 +08:00 4732 次点击
    这是一个创建于 2058 天前的主题,其中的信息可能已经有所发展或是发生改变。

    实在看不下去了,思维毫无逻辑想到哪写到哪,代码不格式化,变量命名大小写毫无规则,model controller 混着写,各种不规范的方式导致整个代码质量降低很多经常出一些奇怪的 bug,但是碍于面子没有出 bug 的地方又不好意思改动别人写的代码。 大家有什么方法应对这种问题吗?

    第 1 条附言    2020-02-27 11:23:36 +08:00
    谢谢大家的建议,其实我是外包接的一个项目,组员是另外一个接包的自由职业者,所以还没拿到钱之前既无法直接走人又不太好建议别人怎样规范,看来还是要尽快赶完这个项目后期不再参与比较好。
    以前挺反感 code review 的,现在觉得真的是有必要
    32 条回复    2020-02-28 03:23:27 +08:00
    uxstone
        1
    uxstone  
       2020-02-27 09:02:34 +08:00
    跳槽离职
    whileFalse
        2
    whileFalse  
       2020-02-27 09:03:38 +08:00 via iPhone
    一般而言我推荐团队新人的代码风格应和现有代码相符。

    你也这么写吖
    kiritoxf
        3
    kiritoxf  
       2020-02-27 09:11:27 +08:00
    正常应该有人 review 的
    xianxiaobo
        4
    xianxiaobo  
       2020-02-27 09:15:37 +08:00
    直接告诉他,让他注意点就行了
    FindByMe
        5
    FindByMe  
       2020-02-27 09:26:25 +08:00 via iPhone   3
    制定代码风格规范、配置静态检查工具、有不符合规范的代码、直接抛 error
    danyi
        6
    danyi  
       2020-02-27 09:30:46 +08:00   7
    没遇到过这样的组员,不过我同事遇到过,看样子他们挺想打我的。
    coderluan
        7
    coderluan  
       2020-02-27 09:43:56 +08:00
    你是负责人就制定代码规范和进行 code review,你不是负责人就建议负责人这么做。负责人明确拒绝建议离职,不懂代码质量重要性的人基本也没啥技术水平。负责人认可但是因实际情况难以推行,比如工期太紧张,这种就没啥好办法了,只能尽量明确职责,分配好模块,让自己尽量不去看别人代码,不负责别人的 bug。
    minglanyu
        8
    minglanyu  
       2020-02-27 09:45:14 +08:00   1
    1.以身作则
    2.成为他们的 leader
    3.code review
    tt67wq
        9
    tt67wq  
       2020-02-27 09:47:11 +08:00
    code review 不给通过
    itskingname
        10
    itskingname  
       2020-02-27 10:15:14 +08:00
    依靠文档不如依靠代码。用文档或者 txt 规范来约束人是没有效果的。

    举个例子,例如 Python 项目,你多次强调写代码要遵守 PEP8 规范,可就是有人不遵守。怎么办?在 git 上面加个流程,必需 Pylint 扫描无报错,无警报了才能 merge 代码。这样就能迫使对方必需遵守。
    sagaxu
        11
    sagaxu  
       2020-02-27 10:16:52 +08:00 via Android
    跳槽到好 team,让你自己成为被嫌弃的那个
    carpediem777
        12
    carpediem777  
       2020-02-27 10:17:52 +08:00
    其他组员也许也有跟你一样的想法
    hoyixi
        13
    hoyixi  
       2020-02-27 10:20:56 +08:00
    团队没有代码规范吗?
    试用期是干嘛用的?

    管理人员是干嘛吃的,正事不管,在管啥? 哈哈
    meteor957
        14
    meteor957  
       2020-02-27 10:26:47 +08:00
    把你的烂代码给他写,然后你就心理平衡了
    nmap
        15
    nmap  
       2020-02-27 10:54:55 +08:00
    严格模块级隔离,出了问题可追溯,就跟你没啥关系
    Smash
        16
    Smash  
       2020-02-27 11:21:08 +08:00
    代码提交要先规范检查,检查不通过不会让合入的,规范后的代码,我都能忍。不然就六字真言。
    shm7
        17
    shm7  
       2020-02-27 11:27:53 +08:00 via iPhone
    向甲方提这些事情
    learnshare
        18
    learnshare  
       2020-02-27 11:32:24 +08:00
    接手的项目,该扛起来就扛起来。代码规范还是要有的

    我接手的项目没办法下手写代码,就完全换了 lint 规则,处理了几百个文件、几千处问题
    不过逻辑、模块划分啥的还是没有办法
    gowa
        19
    gowa  
       2020-02-27 11:33:18 +08:00 via Android
    你当 reviewer,代码打回去。
    enlight
        20
    enlight  
    OP
       2020-02-27 11:37:56 +08:00
    @learnshare 说的很对,我这边代码已经完全不是 lint 能解决的了,逻辑思维感觉很混乱。我本来搭好了一个架子,model controller services 划分得非常清晰。结果对方直接把 model 写到 services 里去了,怎么省事怎么来。而甲方只看能不能跑通和开发速度不管代码质量,本来还是因为我一个人开发速度不够才又找了个人,所以我也很为难
    jinsongzhao
        21
    jinsongzhao  
       2020-02-27 11:41:42 +08:00
    @danyi 你可以的,原来你就是那位组员! 23333
    mcfog
        22
    mcfog  
       2020-02-27 11:43:13 +08:00 via Android
    @enlight 既然是给你加速度加来的人,那很简单啊,告诉你领导和甲方爸爸,加这个人反而速度变慢
    jinsongzhao
        23
    jinsongzhao  
       2020-02-27 11:51:17 +08:00
    因为代码即文档是最省力的开发模式,所以给他提供代码风格手册,好的风格大家都乐意接受,毕竟本人也要阅读,已经存在的代码重构它,也可以继续提升质量;本人不在了,那终归无法完美,只能改善,想想 github 上好项目的代码风格各式各样,而且不同语言风格混合开发也常见,读别人的代码提升自己也是必经之路。
    charlie21
        24
    charlie21  
       2020-02-27 12:03:33 +08:00 via iPhone
    重写给他看,供他学习。求他
    blessyou
        25
    blessyou  
       2020-02-27 12:21:57 +08:00 via Android
    当着他的面重写
    wm5d8b
        26
    wm5d8b  
       2020-02-27 12:49:17 +08:00
    设计上解耦合,确保每一部分都能重构
    wm5d8b
        27
    wm5d8b  
       2020-02-27 12:50:55 +08:00
    @charlie21 #24
    @blessyou #25
    这样不行,他会认为反正你会去重写,所以乱写好了
    sampeng
        28
    sampeng  
       2020-02-27 12:54:31 +08:00 via iPhone
    外包项目跑起来就是赢啊
    ianva
        29
    ianva  
       2020-02-27 14:41:31 +08:00
    没有 code review 的机制,都是空谈
    charlie21
        30
    charlie21  
       2020-02-27 14:44:29 +08:00
    @wm5d8b 职业道德会要求他去学习
    mikulch
        31
    mikulch  
       2020-02-27 16:21:34 +08:00
    可能你没看过我这个代码。if 可以嵌套 5,6 层。一个方法几百行。
    最牛逼的是写这个代码的人从我们公司走后竟然去了京东了。
    yilingersier
        32
    yilingersier  
       2020-02-28 03:23:27 +08:00
    (又不是不能用。。手动狗头
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3366 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 04:41 PVG 12:41 LAX 21:41 JFK 00:41
    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