Google之类公司的代码质量如何?

标签: 开发 Code Review Google 代码质量 | 发表时间:2014-09-19 08:39 | 作者:黄利民
出处:http://blog.jobbole.com

这是  Quora 网友的一个提问,他还补充说:“我经常在想,像谷歌这样的公司,它们的代码质量如何呢?根据我在两个大公司的工作经历来说,我感觉代码质量和公司年龄成反比。” 下面是伯乐在线摘编了两位网友的回复:一位是Google的程序员,另一位是Google前员工。

Google 程序员 Jeremy Hoffman 的回复:

我没有怎么去比对过,但我认为Google的代码质量是非常高的。Google的软件工程文化是原因之一(感谢  Kevin X Chang 给建议):

  • 代码审查。在你提交任何代码改动之前,你得找去代码“主人”签字确认。为了实现,评审者(被鼓励去)建议大修代码,而不是让它成为根本没有经过思考的“图章”代码。
  • 按语言可读性要求坚持代码风格指南(请 参阅这里)。除了让我们代码有统一的外观(所以我们能快速认出方法、成员等),我们的风格指南禁止了一些复杂、混乱、易出错的 C++ 特性(比如:class 类型的静态和全局变量)。
  • 整个团队都致力于提供我们代码库的质量,维护我们的核心库,不断给我们做更好的工具。
  • 一个活跃的“代码健康”课题组。
  • 发布软件时,不对外部期限负有义务。一般而言,这让我们可以正确做事,而非为了期限把东西拼凑起来。
  • “Fixits.” 例如,一个工程师或许说,“我认为我们真应该别再用过时的  CruftMap 类(class)了。我打算在 1 月 20 日组织一次 Fixit。” 当 1 月 20 日来临时,大家应当暂停其正常运作,把他们代码中的 CruftMaps 都换掉。在 1 月 21 日,Google 就永远和 CruftMap 说拜拜了!不过最近,核心库团队已经很优秀了,貌似没有啥东西可再值得类似的 fixit 了。
  • 测试文化。单元测试覆盖率可能接近 100%,我们有持续构建/整合/测试,还有知名的 ”Testing on the Toilet” (请参见 Google Testing Blog)

题主是想讨论代码年龄和代码质量之间的非正比关联,这一现象程序员有时戏称为“位腐”。Google 肯定也有。不是这里就是那里,你会发现Google早期的代码被孤立了(不是工程师的活跃工作对象了,或没人熟悉了),但它们还在。我曾因为不得不和一些遗留代码打交道,曾经一直感受过沮丧。就我个人经验来看,我认为,在Google快速扩张的一段时间内,如此少量的工程师实现了诸多特性,这阶段中的有些代码,不能托起我们近日代码质量标准。

译注:“Bit rot”相当于“ Software rot”,意指软件性能随着时间而退化,或者因环境变化而失势。( 维基百科

但从宏观角度来说,我实际上认为Google的代码质量是随着时间在提高,原因就是我上面所说的。

 

Googe 前员工 Dima Korolev 的回复:

之前我在Google时常抱怨。

然而,在看过微软、Facebook 和一些早期创业公司朋友写的代码后,我欣然确认了,Google的代码质量确实非常高。保持代码高质量的方法并不总是 great。工程师的态度也并不总是 great。被奖励和认可的程序员,也并不总是哪些喜欢更整洁代码的人。但不知何故,它奏效了,至少以前是奏效了。

事实上,在我离开Google多年后,人们常抱怨我在维护代码标准方面有点过于严苛。我不确定这和Google有多大关系,但肯定有关系。过一段时间后,会有人学习理解这些代码为什么不长久,它们能如何改善,应当如何改进。:)

Google之类公司的代码质量如何?,首发于 博客 - 伯乐在线

相关 [google 公司 代码] 推荐:

Google之类公司的代码质量如何?

- - 博客 - 伯乐在线
这是  Quora 网友的一个提问,他还补充说:“我经常在想,像谷歌这样的公司,它们的代码质量如何呢. 根据我在两个大公司的工作经历来说,我感觉代码质量和公司年龄成反比. ” 下面是伯乐在线摘编了两位网友的回复:一位是Google的程序员,另一位是Google前员工. Google 程序员 Jeremy Hoffman 的回复:.

你们公司做代码审查吗?

- - 外刊IT评论
每当从各种公司听到他们正在尝试自动化部署/测试的事情,我都非常关注,但通常会很吃惊,他们很少会考虑去实行代码审查制度. 看到这种情况,我通常想问: 如果代码没有经过其它人的审查,你如何知道你要测试的是什么. 这答案(如果有的话)通常是捏着手指头说 有几个人在做代码审查或“正在考虑中”. 不论你采用什么形式的测试过程,什么形式的部署过程,没有代码审查——game over.

Google 大厨的创业公司

- scaoen - 爱范儿 · Beats of Bits
人说“近朱者赤,近墨者黑”,大厨和科技能碰撞出什么火花. Google 的两位前任大厨 Nate Keller 和 Mirit Cohen 显然也被硅谷的创业文化深深影响,2008 年自立门户开了一家创业公司  Gastronaut,业务是——做菜. Gastronaut 这名字就够 Geek,右图就是公司 logo,难道是 Google + Astronaut 的缩写.

Google 是如何做代码审查的

- litefy - python.cn(jobs, news)
在上一篇文章中提到过,我已经不在Google工作了. 我还没有想清楚应该去哪里—有两三个非常好的工作机会摆在我面前. 因为在这段做决定时间里,我不再受雇于任何人,我想可以写一些专业性的东西,一些很有趣,但也会在同事和管理工作中导致关系紧张的东西. Google是一个非常优秀的公司. 他们做出了很多令人称赞的东西—既是公司外部,人们可以看到的东西,也是公司内部.

Google放弃Buzz和代码搜索

- 2楼水饺 - Solidot
七匹狼钱包 写道 "Google产品副总裁布拉德利-霍洛维茨(Bradley Horowitz)在官方博客宣布将终止多项产品和服务,包括代码搜索引擎、Buzz、Jaiku、iGoogle社交功能,以及针对Google搜索的大学搜索项目.

[原]Eclipse中使用google代码风格

- - 傲慢的上校的专栏
第一步,找到文件(有些废话),在 https://code.google.com/p/google-styleguide/source/checkout中通过svn获取eclipse-java-google-style.xml(不愿意麻烦,也可通过csdn下载: http://download.csdn.net/detail/aomandeshangxiao/5209114).

Google Ventures 投资前 Google 员工的创业公司 Stamped

- 安得米 - 谷奥——探寻谷歌的奥秘
Stamped这家纽约创业公司刚刚获得了来自Google Ventures和Bain Capital Ventures于年初的A轮投资,投资金额未披露. Stamped三位联合创始人里有两位都是前Google员工,其7位团队成员里也有4位来自Google,不过他们现在的应用还只有iPhone版. Stamped的具体产品还未上线,他们也没有透露具体的信息,但他们要解决的是移动领域的众包打分问题,现在很多评价都让你给出1-5星的星级,但是1是最差,5是最好,那么2、3、4又是什么.

Google+源代码泄露Google可能在做类似Quora的Google Experts,整合Google Voice,增加留言墙等

- kxxoling - 36氪
开发者Matt Mastracci在浏览Google+源代码时发现了很多隐藏的功能,为此他写了一篇文章,他发现:. Google+ Wall(留言墙). 很像Facebook留言墙,基本上是用户A可以在用户B的个人档案页面留言,而不必非在自己的Timelin中增加一条消息. Google Experts(专家).

谷奥: Google 准备提前给投资过的公司发放 Google+ API

- EinVerne - 谷奥聚合——谷奥主站+谷安 aggregator
尽管Google+ API还需要数个月才能跟各位翘首以盼的开发者见面,但其中有一位心急的开发者提前联系了Google+的项目经理,结果给我们带来了一些坏消息:如果你被Google认为是“受信测试者”,那么你很快就可以拿到API了,大概也就个几天吧. 好吧,其中一条就是你被Google旗下的投资公司Google Ventures投资过,这似乎有点内部测试的意思,帮助Google+ API继续改进.

如何阅读公司的项目代码

- - CSDN博客综合推荐文章
看到ITFriend中有些小伙伴刚进入公司,面对大量的项目代码,往往手足无措,有点慌,我说下我的经历. 声明:我从事的是C++开发工作,阅读的代码都是基于客户端/服务器的,以下谈的是C++项目代码的阅读方法多些. 希望懂java的小伙伴分享下java公司项目代码的阅读方法,小弟感激不尽. 编译代码把项目跑起来  代码到手以后,先尝试着编译一下,无非就是库的配置,库路径的配置,缺少某个文件,或者头文件包含路径不正确,一般公司给你的代码都可以编译成功,windows平台下一般使用vs工具来编译,集成调试工具,而Linux下编译.使用gcc(g++)编译器 make工具或者automake工具,具体用法在搜索引擎上能找到.