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

2017 年 12 月 16 日 数据库开发

(点击上方公众号,可快速关注)


英文:Quora,翻译:伯乐在线/黄利民

blog.jobbole.com/74107/


这是 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有多大关系,但肯定有关系。过一段时间后,会有人学习理解这些代码为什么不长久,它们能如何改善,应当如何改进。:)



觉得本文有意思?请转发分享给更多人

关注「程序员的那些事」,编程更有趣


淘口令复制以下红色内容,再打开手淘即可购买

范品社,使用¥极客T恤¥抢先预览(长按复制整段文案,打开手机淘宝即可进入活动内容)

近期,北京地区正常发货,但派件时间有所延长。

登录查看更多
0

相关内容

一家美国的跨国科技企业,致力于互联网搜索、云计算、广告技术等领域,由当时在斯坦福大学攻读理学博士的拉里·佩奇和谢尔盖·布林共同创建。创始之初,Google 官方的公司使命为「整合全球范围的信息,使人人皆可访问并从中受益」。 Google 开发并提供了大量基于互联网的产品与服务,其主要利润来自于 AdWords 等广告服务。

2004 年 8 月 19 日, 公司以「GOOG」为代码正式登陆纳斯达克交易所。
专知会员服务
146+阅读 · 2020年6月15日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
网上搜不到的Airbnb面试资料
九章算法
12+阅读 · 2019年8月22日
程序猿的终极噩梦,祖传代码,一动,修半年!
九章算法
4+阅读 · 2018年12月20日
在 Google 工作六年半后,我还是选择离职了
开源中国
4+阅读 · 2018年10月21日
30岁还在敲代码,等被公司请走吗?
Python程序员
4+阅读 · 2018年9月10日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
如何做文献综述:克雷斯威尔五步文献综述法
清华大学研究生教育
21+阅读 · 2017年7月10日
你见过马化腾17年前写的代码吗?
互联网it观察
5+阅读 · 2017年7月3日
Arxiv
6+阅读 · 2020年2月15日
The Evolved Transformer
Arxiv
5+阅读 · 2019年1月30日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
7+阅读 · 2018年6月1日
Arxiv
8+阅读 · 2018年4月8日
Arxiv
3+阅读 · 2018年3月28日
Arxiv
6+阅读 · 2016年1月15日
VIP会员
相关资讯
网上搜不到的Airbnb面试资料
九章算法
12+阅读 · 2019年8月22日
程序猿的终极噩梦,祖传代码,一动,修半年!
九章算法
4+阅读 · 2018年12月20日
在 Google 工作六年半后,我还是选择离职了
开源中国
4+阅读 · 2018年10月21日
30岁还在敲代码,等被公司请走吗?
Python程序员
4+阅读 · 2018年9月10日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
如何做文献综述:克雷斯威尔五步文献综述法
清华大学研究生教育
21+阅读 · 2017年7月10日
你见过马化腾17年前写的代码吗?
互联网it观察
5+阅读 · 2017年7月3日
相关论文
Arxiv
6+阅读 · 2020年2月15日
The Evolved Transformer
Arxiv
5+阅读 · 2019年1月30日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
7+阅读 · 2018年6月1日
Arxiv
8+阅读 · 2018年4月8日
Arxiv
3+阅读 · 2018年3月28日
Arxiv
6+阅读 · 2016年1月15日
Top
微信扫码咨询专知VIP会员