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

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

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

很多年前,一群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代码健康组技术主管,《简约之美:软件设计之道》一书的作者。


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/315

把同事的代码重写得干净又整洁,老板却让我做回滚?

我的同事把这周写的代码提交了。我们在开发一个图形编辑器画布,已经实现了形状调整功能,即通过拖拽形状边缘的手柄来调整形状(比如矩形和椭圆形)。代码可以运行。

你不知道的 useCallback

对于新手来说,没写过几次死循环的代码都不好意思说自己用过 React Hooks。本文将以useCallback为切入点,谈谈几个 hook 的使用场景,以及性能优化的一些思考。

后端传过来一个JS代码,前端拿到之后执行

今天收到了一个需求,居然是后端给我传过来一个JS代码,然后前端去执行。因为后端传过来的JS代码是一个字符串,所以刚开始有点懵,以前也没有做过这样的东西所以刚开始没有方法。

【重构】使用 Hooks 让代码更易于变更

重构过程中,肯定会遇到新的代码如何做技术选型的问题,要考虑到这套技术的生命力,也就是他是否是更新的技术,还有他的灵活和拓展性,期望能够达到在未来至少 3 年内不需要做大的技术栈升级

关于 Google 发布的 JS 代码规范

Google为了那些还不熟悉代码规范的人发布了一个JS代码规范。其中列出了编写简洁易懂的代码所应该做的最佳实践。代码规范并不是一种编写正确JavaScript代码的规则,而是为了保持源代码编写模式一致的一种选择。

原生 js 中应该禁止出现的写法,以提高代码效率和安全性

严格模式下,在 ES6 之前应禁止使用。ES6 开始可以使用,函数的作用域为声明该函数的块内部。非严格模式下应禁止使用。禁止使用 eval。eval 比一般 javascript 执行要慢,因为浏览器对 javascript 进行了优化。

webpack优化之玩转代码分割和公共代码提取

开发多页应用的时候,如果不对webpack打包进行优化,当某个模块被多个入口模块引用时,它就会被打包多次(在最终打包出来的某几个文件里,它们都会有一份相同的代码)。当项目业务越来越复杂

如何处理前任程序员留下的代码

作为软件工程师不可避免会遇到的一个场景是:我们在改变或添加一个功能到不是我们创建的、我们不熟悉的、与我们负责的系统部分无关的代码中时,会遇到麻烦。虽然这可能会是一个繁琐而艰巨的任务

提高代码质量:如何编写函数

本文从函数命名,函数参数和函数的代码编写三个方面谈了关于如何编写好一个函数的感受和想法。文中提到了很多具体的情况,当然日常编码中肯定会遇到更多复杂的情况可能我暂时没有想到。我简单的归纳了几点

让代码具有可读性的10种最佳实践

如果咱们关注代码本身结构及可读笥,而不是只关心它是否能工作,那么咱们写代码是有一定的水准。专业开发人员将为未来的自己和“其他人”编写代码,而不仅仅只编写能应付当前工作的代码。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!