为了账号安全,请及时绑定邮箱和手机立即绑定

老板:你来弄个团队代码提交规范

大家好,我是陈哥,今天聊聊禅道的代码提交规范~

背景

《还不知道这个原则的程序员,要小心了》 的文章中,我提到了禅道的代码提交规范。简单来说,我们将工具融入到禅道团队的日常代码提交过程中,利用工具对流程、行为进行规范和约束。

接下来,我将从编码规范、测试规范等方面,和大家简单分享一下禅道团队的代码提交规范。为了方便大家了解和学习,大家可以发送 【代码提交规范】,领取禅道团队的代码提交规范。

一、编码规范

禅道团队规定:开发人员每次本地提交(commit)时,变更行数不能超过20行。 因此,大家一般采取小批量、多频次的方式提交。我们希望通过这种渐进式的代码改动,逐渐提高团队对代码提交规范的意识。

然而,在实际过程中,仅依赖团队成员的自觉性是远远不够的。因此,引入工具变得尤为重要,我们使用的是在自主研发的DevOps平台。我们在DevOps平台上增加了门禁。每当团队成员在本地进行commit操作时,就会触发hook,会对当前的代码进行diff检查。

如果变更的代码超过20行,团队成员的代码将无法commit。但如果某个开发人员变更了30行,然后又删掉了10行,那这次修改就算作20行。通过DevOps平台这类工具的硬性限制,禅道团队才能做好监督和约束。

此外,团队成员在push代码时,禅道团队要求一次推送不超过60行,结合前面提到的commit约束,也就是说每次推送不能超过3次提交。代码推送后,并不会存入代码库,而是发起代码评审(类似Gerrit)。 人工评审通过后,代码才能保存到代码仓库中,与其他人的代码进行合并。这种方式适合主干开发,或者对代码质量有严格要求的团队。

其实,禅道团队的做法与GitHub、GitLab的流程有一定出入。 GitHub是以PR(Pull Request)的方式来确保代码质量,但这种方式并不符合企业的实际流程要求,涉及过多的库 过多会花费较大精力。而GitLab是通多分支合并的方式实现代码评审,而我们会强制做事前代码评审,代码评审不通过就不入库。

在后续的研发管理中,我们还会考虑增加代码的覆盖率等要求,来不断完善和覆盖研发管理流程。

禅道代码提交规范

二、测试驱动开发

禅道团队也曾做过TDD(测试驱动开发),在相当长的一段时间内,团队进行了大规模地单元测试补充。尽管最终全部补上了,但在此过程中,大家依旧没有形成一种自发自觉的习惯。

《勤训》写道:“无如人之常情,恶劳而好逸。” 从人性的角度来说,人都是有惰性的。这种情况下,我们就必须要通过工具来强制规范大家的行为,达到提升效能的目的。

目前,我们通过工具强制执行单元测试:只有通过单元测试,代码才能提交。这包括小批次提交、强制性人工代码评审、强制性的调用本地测试代码检查等。

此外,我们还会强制性设计评审等流程。设计评审通过引导式表单进行,在后续我们也可能会加入流水线。

禅道代码提交规范

三、禅道代码提交规范

在之前的开发环境中,禅道团队一直采用share+vim的方式。但vim对 competitor的支持相对较弱,如它仅支持编写代码,并没有聊天功能。鉴于此,我们的定制开发部门已切换到具有WAM模式的Visual Studio Code。经过一段时间的试行,我们发现效果还不错。

后续,我们会准备将整个公司都切换成Visual Studio Code,使用WAM模式,充分利用大模型的能力。另外,我们也会将这些集成到DevOps的流水线当中,并尝试利用大模型进行初步的代码评审。

总结来说,禅道团队的代码提交流程规范:执行强制性小批量提交,同时进行本地单元测试结果的检查,以及强制性的人工代码评审。实际上,在这之前,我们还存在一个强制性的设计以及设计评审环节。

具体的远程分支规范、Git仓库本地分支规范、标签命名规范等内容,我已经帮大家整理在文档中,大家可以备注【代码提交规范】即可领取。

希望我的分享可以帮助到你,也欢迎给我留言与我讨论。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消