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

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

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

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


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

TypeScript 来做依赖注入的限制

依赖注入 是编写可测试/复用代码的关键。 在 TypeScript 中所有对象、属性和方法都有类型,可以大幅简化人工标注的代码,这让很多人重新考虑在 JavaScript 中实现依赖注入。 比如 Angular2 以后的 DI 实现

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

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

Js代码中的span拼接

今天遇到一个小需求,用bootstrap的table只有两个字段,占用太宽,页面不美观,组长要求用拼接,一行几列的形式展现出来。我在form表单中拼接了span,遇到以下问题:

怎么样才能不写出别人嘴里的烂代码?

每个人对于好的代码在自己不同的时期都有不一样的理解。当个人所在的层次变化,好代码的概念也会跟着变化。老夫上手就是复制粘贴,别跟我说什么编码规范,设计模式。

你不知道的 useCallback

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

写业务代码最容易掉的8种坑

线程、线程同步、池、网络连接、网络链路、对象实例化、内存等方面的基础是最容易犯错的地方,搞清楚框架内部对于这些基础资源的的使用方式,根据最佳实践进行合理配置,这是业务开发时需要特别关注的点。

如何用不到200行代码写一款属于自己的JS类库

JavaScript 的核心是支持面向对象的,同时它也提供了强大灵活的 OOP 语言能力。本文将使用面向对象的方式,来教大家用原生js写出一个类似jQuery这样的类库。我们将会学到如下知识点

Js代码整洁之道

最近在做一些项目重构的工作,看了不少脏乱差的代码,身心疲惫。本文将讨论如何编写整洁的代码,不求高效运行,只求可读性强,便于维护。

什么样的代码叫好代码?

代码的本质还要在机器上运行,好的代码不单单的纯粹的简单的几个字符的问题,好的代码不仅仅是排版上或者语法上好看,还要能经过产品的测试验证,这是评判代码好坏的最准确的标准

程序员该如在低代码和无代码开发中抉择?

对于一个人第一次是如何了解低代码/无代码这两种开发方式,我总是充满好奇。这就是为什么我觉得贸易展会是如此有趣的原因;因为我可以拿同样的问题问每一个走进你的展台的人们。通常这是我问他们的第一个问题,当然是在扫描了他们的胸牌之后。

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

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全