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

陈哥聊测试
• 阅读 56

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

背景

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

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

一、编码规范

禅道团队规定:开发人员每次本地提交(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仓库本地分支规范、标签命名规范等内容,我已经帮大家整理在文档中,大家可以备注【代码提交规范】即可免费领取。

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

点赞
收藏
评论区
推荐文章
Irene181 Irene181
3年前
你写的Python代码规范吗?
总第141篇/张俊红1.什么是PEP8PEP是PythonEnhancementProposals的缩写,直译过来就是「Python增强建议书」也可叫做「Python改进建议书」,说的直白点就是Python相关的一些文档,主要用来传递某些信息,这些信息包括某个通知亦或是某个新的规范。关于更深层次的概念,大家有兴趣的可以自行去了解。PEP后面的数字
前端标准化之旅
本文主要是介绍前端研发的一些标准化规范,良好的代码规范,不仅能够让代码简洁清晰,还可以减少bug的出现,更能够让看代码的人赏心悦目,本文主要从命名规范、语法规范、后端系统开发规范、版本更新规范、上线邮件申请规范、项目启动规范来、文件目录规范七方面介绍,
Wesley13 Wesley13
3年前
GitHub Actions入门
一、一些概念持续集成(Continuousintegration)频繁地向一个共享仓库提交少量代码变更的软件开发实践。使用GitHubActions,可以创建自定义的CI工作流,以自动构建并测试你的代码。从你的仓库中,你可以查看代码变更的状态和工作流中每个操作的详细日志。CI通过提供代码变更的及时反馈来更快地检
Stella981 Stella981
3年前
Git commit message和工作流规范
作者:程柳锋目的统一团队Gitcommit日志标准,便于后续代码review,版本发布以及日志自动化生成等等。统一团队的Git工作流,包括分支使用、tag规范、issue等Gitcommit日志参考案例angular(https://www.oschina.net/action/GoToL
Wesley13 Wesley13
3年前
GO 编码规范
编码规范本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性。本规范将从命名规范,注释规范,代码风格和Go语言提供的常用的工具这几个方面做一个说明。该规范参考了go语言官方代码的风格制定。一、命名规范命名是代码规范中很重要的一部分,统一的命名规则有
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Stella981 Stella981
3年前
Git提交规范流程和解决冲突实际使用
前言:GIT对于我们程序员来说是吃饭的工具,本篇主要是针对提交和分支以及对于大多数程序员闻风丧胆的冲突一些个人见解,如果有啥不对的或者你们公司git提交流程欢迎下方评论。在讨论规范之前,我们需要定最基本的要求1.团队内保持良好的代码格式便于易读和维护,最主要减少不必要的代码冲突(建议统一使用开发工具(idea)的代码格式化)。2.提交任何代码必须
linbojue linbojue
8个月前
建立web前端开发规范的重要性(浅谈前端开发的重要性以及前景分析)
一个好的程序员肯定是要能书写可维护的代码,而不是一次性的代码,怎么能让团队当中的其他人,甚至过一段时间之后的你,再看自己某个时期写的代码,依然能看懂?这就涉及到规范你的代码了。一、规范代码的好处1、从根本上降低开发成本:提高代码整体的可读性、可维护性、可复
京东云开发者 京东云开发者
1个月前
Code Review:探索工程实践之道
作者:京东物流冯志文前言本文参考《京东JAVA代码规范V1.1》\&Google代码评审工程实践方法论,结合团队代码评审的实践经验整理成文档,这份文档是我们团队集体经验的结晶。我相信公司其他部门也有类似的经验和最佳实践。希望通过互相交流和学习,共同提高代码
京东云开发者 京东云开发者
2星期前
Java方法设计原则与实践:从Effective Java到团队案例
作者:京东物流京东物流背景本文通过阅读《EffectiveJava》、《CleanCode》、《京东JAVA代码规范》等代码质量书籍,结合团队日常代码实践案例进行整理,抛砖引玉、分享一些在编写高质量代码方面的见解和经验。这些书籍提供了丰富的理论知识,而团队