Google内部在代码质量上的实践

时间: 2018-01-04阅读: 284标签: 代码

良好的编程习惯涉及到很多方面,但在软件行业内,大多数的公司或组织都不会把良好的编程习惯列为主要关注点。 例如,具有可读性和可维护性的代码比编写好的测试代码或使用正确的工具更有意义,前者的意义在于可以让代码更易于理解和修改。 但是,我们如何确保工程师在遵循这些实践的同时,还能保证工程师能够独立的做出合理的工程决策?

很多年前,一群Google员工聚集在一起来探讨解决这个问题,他们自称为“Code Health”小组。为什么叫“Code Health”?在工程生产力这个圈子里,通常会使用一些具有一定内涵的术语,比如最佳实践,编码标准,代码质量等,但也可能导致人们会误解我们正在从事的事情和我们实际想要关注的内容不是同一件事。我们真正所关心的是软件工程的过程和实践,即在编写软件的过程中,能够影响代码的可读性,可维护性,稳定性或代码简洁性的任何方面。我们喜欢把“Health”的代码作为所有这些领域的统称。

一般情况下,这是许多作者,理论家和会议发言人所涉及的领域,但在公司或组织内部通常不会配备专门的资源来做这样的事情。在大多数软件公司,都是由一些工程师在额外的时间进行推动,或者由高级技术人员进行领导。但是,每个软件工程师实际上都以某种方式参与“Code Health”。毕竟,我们都是编写代码,而且我们大多数人都非常关心如何做到“正确的方式”。那么为什么不创建一个能够帮助工程师以“正确的方式”做事的组织呢?

这也并不是说我们对Google的工程实践有强制的规定。我们仍然让工程师自己做出对他们的项目最明智的决定。“Code Health”团队所做的工作是努力改善工程师的生活,并以更短的迭代时间编写产品代码,减少开发工作中需要耗费的精力,提高代码稳定性和改进性能。当他们的代码变得更容易理解,他们的库变得更简单时,每个人都会发自内心的感激,因为我们都知道这些改变能让我们更快地做出更好的产品。

但是,我们如何完成这一切呢?好吧,在Google,“Code Health”的实践有很多种形式。 在Google内部有一个由20%(Google内部鼓励员工自由安排20%的工作时间做自己认为有益于Google发展的事情)的贡献者组成的“Code Health”组织,他们致力于为每个人提高工程质量。这个小组的成员维护最佳实践的内部文档,并作为一个团队的参谋将军,为所在的团队做改善实践。有时候对于关键项目,小组成员会直接参与重构代码,改进库,或改进工具来促进“Code Health”。

例如,这个核心小组保留了Google的代码审查指南,撰写了关于最佳实践的内部出版物,组织了关于提高生产力的技术讲座,致力于在Google培养优秀的软件工程文化。

一些“Code Health”小组的高级成员还建议项目主管和团队领导如何改进他们团队的工程实践。然而并不是所有人都清楚如何在一个团队实施有效的代码健康实践,我们要先让团队中的一些人比其他人有更多的经验,我们提供咨询和经验来帮助团队中成员不断进步,团队成员之前互相影响,最终简化代码和开发者体验便能成为现实。

除了“Code Health”这个核心小组之外,Google的许多产品和团队都有自己的“Code Health”组织。这些组织倾向于在实际的编码项目上更加密切地工作,比如通过重构解决技术债务,制作检测和防止错误编码实践的工具,创建自动代码格式化器 automated code formatters,或者使系统自动删除未使用的代码。通常,这些小组会与核心小组协调并会面,以确保我们不会在整个公司做重复的工作,因此我们可以与Google的其他人共享出色的新工具和系统。

多年来,Google的“Code Health”团队对工程师在Google快速开发优质产品的能力上产生了重大影响。但是代码复杂性并不是一个只影响Google的问题,它会影响编写软件的每个人。因此,为了帮助每个人,我们计划在未来几周和几个月内发布文章,详细介绍我们鼓励内部的具体实践,这些实践可以在任何地方应用于帮助您的公司,代码库,团队和您。请继续关注Google测试博客,更多Code Health文章即将推出!


作者:Max Kanat-Alexander原文链接翻译来源
Google代码健康组技术主管,《简约之美:软件设计之道》一书的作者。