专栏首页Java帮帮-微信公众号-技术文章全总结提高GIT中代码质量的七点优秀实践

提高GIT中代码质量的七点优秀实践

毋庸置疑,由于Git允许开发人员能够同时在相同的代码库上工作,因此它在各类软件开发中起到了重要的作用。不过,我们也发现部分开发人员由于未能遵循Git的相关最佳实践(请参见--https://acompiler.com/git-best-practices/),因此导致了各种程序在运行,以及代码调用过程中所暴露出来的棘手问题。下面,我将和您讨论在GIT中,影响代码质量的七项优秀实践,希望能够对您的日常开发项目提供帮助。

1.原子性提交(Atomic Commit)

众所周知:向Git提交内容,就意味着您已经确认了代码的更改,并希望将其作为新的受信任版本,保存到Git存储库中。不过,版本控制系统通常不会限制您提交代码的方式。也就是说,您可以采取如下三种方式中的任何一种:

  • 一次性提交上千个更改。
  • 提交所有的dll和其他依赖项。
  • 将有问题的代码检入存储库中。

可见,此举并不能保证更新代码的一致性,有时甚至会让代码的整体质量有所下降。因此我们需要一些时间来检查代码(请参见-- https://dzone.com/articles/what-is-code-review-and-why-do-you-need-it)。在此,为了保障团队的总体生产力水平,我们可以采用原子性提交(请参见-- https://acompiler.com/git-commands/),例如:在执行原子性提交时,您的某项更改提交可能会涉及多个文件,那么我们应当确保这是全局性的写入,进而避免出现任何不一致的情况。和我们以前熟悉的数据库原子性一样,我们显然需要将其贯彻到针对Git的操作中。

2.明确地说明提交的内容

许多开发人员只是一味地执行更改,提交,以及推送等操作流程,从来不会顾及提交文件的类型和必要性。这样就会导致诸如:dll和pdf等不需要的文件类型,被提交到了存储库中。因此,在将代码检入存储库之前,您可以考虑如下两个问题:

  • 您是否确实需要检入所有的文件?
  • 它们是否为源代码中必要的部分?

您可以简单地使用.gitignore文件(请参见-- https://acompiler.com/git-commands/),来避免在存储库中出现那些不需要的文件。.gitignore文件既能够为我们提高存储库的清晰度,又有助于我们保持代码的整洁性。据此,您可以自由地提交各种代码文件,那些.dll和.class等自动生成的非必要文件,则会被自动地忽略掉。如果您要同时处理多个存储库,则可以使用全局.gitignore文件,而无需反复地进行添加或推送。

3.掌握各种Git命令

毫无疑问,Git是一个功能强大、且超级实用的工具。如果您能够像对待Linux/Unix操作系统那样,熟练地掌握各种基本的git命令(请参见--https://acompiler.com/git-commands/),那么您就能够更有效地使用该工具,并在操作Git的过程中达到事半功倍的效果。

在使用Git时,您可能会碰到一些语法规则等困难,而Git提供了非常友好的联机帮助。您可以使用“git help+命令名称”从git的bash中了解有关某个Git命令的更多信息。这种快捷的查找方式,几乎含括了您可能用到的所有git命令。

4.梳理工作流程

如果您的团队正在某个Git管理项目上协同工作,那么整个开发团队必须确保并使用相同的工作流程。统一流程无疑会给大家带来如下三项优势:

  • 让开发的整个过程更具有条理性。
  • 良好的Git工作流程可始终确保分支(branches)处于整洁状态。
  • 让团队的沟通更加流畅,并提高输出代码的整体质量。

5.先测试后推送

我们需要在提交代码,或将代码推送到生成环境之前,对各项更改进行充分地测试。过去,我们想方设法阻止项目成员将有缺陷的代码,直接提交的本地存储库中。如今,我们同样需要本着敏捷开发的思想,避免那些有问题的源代码,给在线协作团队造成困扰。在具体实践中,我们需要做到:

  • 鼓励整个团队在提交之前,针对其代码的更改部分开展相关的单元测试,这是从根源上避免代码缺陷的流出。
  • 如果在构建的过程中,发现了任何代码的错误,应立即终止构建。大家可通过“会诊”的方式,及时修复该错误,以避免此类错误流入Git中,甚至被其他的代码段所调用到。

6.保护主(master)分支

由于Git中的默认分支是master,因此我们需要确保master分支上的代码,能够稳定地处于生产环境之中。您可以通过诸如:前后钩子(pre and post hooks)、以及公司相关策略等多种方式,来保护master分支。此外,您还可以在master分支上启用如下防护措施:

  • 确保master分支不会被意外或有意地删除。
  • 在master分支上的各种提交历史记录,不应被覆盖掉。
  • 在master中,代码不应在未经审查的情况下,被直接检入。

7.分支管理

Git提供了强大的分支模型。您应该将手头的代码保留在与主分支完全隔离的其他分支中。无论您是要添加一个新功能,还是修复一些错误,亦或需要进行重构,都请首先创建一个新的分支。在完成了必要的更改之后,请审查代码,再发出拉取请求,将其合并到主分支中,并保持同步。

小结

上面便是我们在使用Git时,需要遵循的七项优秀实践。当然,为了进一步提高代码质量和整体生产率,您也可以借鉴AFTER技术,具体内容可参考--https://acompiler.com/after-technique/。

本文分享自微信公众号 - Java帮帮(javahelp)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 优秀程序员共有的7种优秀编程习惯

    编程是一个很有趣、容易的事情,但是编写好的程序可能是一项艰巨的任务。在大多数情况下,我们发现自己绞尽脑汁,试图了解我们撰写的意大利面条代码,或者是因为新添加的次...

    Java帮帮
  • 我在华为写了13年代码的一些感悟

    本文来自《华为人》,作者:徐宏伟 原标题:写了十几年代码,我为什么还没有被拿去“祭天”?

    Java帮帮
  • Dubbo入门学习--Dubbo简单示例(2)

    Dubbo入门学习--Dubbo简单示例 1、Zookeeper安装 从Zookeeper官网下载,进入到bin目录下,在cms中执行zkServer就可以运...

    Java帮帮
  • 这个小学生毕业典礼被全世界围观:疫情之下开脑洞,《我的世界》还能这样玩!中国网友:作业写不完的我感到嫉妒

    日本也不例外,不仅学校已经关闭3个星期,而且一般在3月进行的毕业典礼,基本泡汤了。

    量子位
  • Git的艺术—分支管理

    Git的开发者—— Linus Benedict Torvalds,22岁就创建了Linux系统,发展到2005年的时候,用了仅两周的时间写了一个分布式版本控制...

    腾讯工蜂
  • 【译】如何开始CI

    持续集成有点关于工具以及团队中的思维方式和文化。你希望在开发的过程中能够保持主分支的同时快速集成新代码。此工作主分支将在之后启用持续交付或持续部署(的操作)。但...

    嘉明
  • 如何设计完善的构建系统,为日常开发提速一倍

    在搭建开发环境的构建系统时,我们关注二点: 提高效率,对于大部分事务的自动化,如自动编译代码、自动重启服务。 代码质量,编码完成时,我们则转而关注于代码的质量。...

    Phodal
  • 为什么说万维物联网(WoT)是增强版物联网(IoT)

    大多数物联网系统很少关注开放和大规模系统下各种不同设备相互通信的问题。部分原因是因为物联网主要关注网络栈的较低层(如何在实体之间传输数据)而较少地关注如何促进新...

    博文视点Broadview
  • 高校战“疫”网络安全分享赛-部分PWN题-wp

    周末打了下 《高校战“疫”网络安全分享赛》,作为WEB转PWN的菜鸟,只做出了三个PWN, 虽然被大佬们暴捶,但还是学到了几个操作,这里写一份WP,记录一下。

    Gcow安全团队
  • 数据库的一点理解

    整个数据库系统包括数据,数据库,数据库管理系统。数据库管理系统是位于操作系统和应用程序开发工具之间的的一层,可以由数据库管理员来对数据库管理系统和数据库进行操作...

    HUBU生信

扫码关注云+社区

领取腾讯云代金券