【外刊IT评论网】为什么谷歌要执行严格的代码编写规范

标签: 技术技巧 google 编码规范 谷歌 | 发表时间:2011-08-15 00:32 | 作者:Aqee 风子
出处:http://www.aqee.net
本文是从 Stuff Everyone Should Do (part 2): Coding Standards 这篇文章翻译而来。

Mark CC and SS

本文的作者 Mark CC


本篇是谷歌是如何做代码审查的的续篇。

我们在谷歌所做事情中另外一个让我感到异常有效、有用的制度是严格的编码规范。

在到Google工作之前,我一直认为编码规范没有什么用处。我坚信这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率的东西。

我是大错特错了。

在谷歌,我可以查看任何的代码,进入所有谷歌的代码库,我有权查看它们。事实上,这种权限是很少人能拥有的。但是,让我感到惊讶的却是,如此多的编码规范—缩进,命名,文件结构,注释风格—这一切让我出乎意料的轻松的阅读任意一段代码,并轻易的看懂它们。这让我震惊—因为我以为这些规范是微不足道的东西。它们不可能有这么大的作用—但它们却起到了这么大的作用。当你发现只通过看程序的基本语法结构就能读懂一段代码,这种时间上的节省不能不让人震撼!

反对编码规范的人很多,下面是一些常见的理由,对于这些理由,我以前是深信不疑。

这是浪费时间!

我是一个优秀的程序员,我不愿意浪费时间干这些愚蠢的事。我的技术很好,我可以写出清晰的、易于理解的代码。为什么我要浪费时间遵守这些愚蠢的规范?答案是:统一是有价值的。就像我前面说的—你看到的任何的一行代码—不论是由你写的,还是由你身边的同事,还是由一个跟你相差11个时区的距离人写的—它们都有统一的结构,相同的命名规范—这带来的效果是巨大的。你只需要花这么少的功夫就能看懂一个你不熟悉(或完全未见过)的程序,因为你一见它们就会觉得面熟。

我是个艺术家!

这种话很滑稽,但它反映了一种常见的抱怨。我们程序员对于自己的编码风格通常怀有很高的自负。我写出的的代码的确能反映出我的一些特质,它是我思考的一种体现。它是我的技能和创造力的印证。如果你强迫我遵守什么愚蠢的规范,这是在打压我的创造力。可问题是,你的风格里的重要的部分,它对你的思想和创造力的体现,并不是藏身于这些微不足道的句法形式里。(如果是的话,那么,你是一个相当糟糕的程序员。)规范事实上可以让人们可以更容易的看出你的创造力—因为他们看明白了你的作品,人们对你的认识不会因不熟悉的编码形式而受到干扰。

所有人都能穿的鞋不会合任何人的脚!

如果你使用的编码规范并不是为你的项目专门设计的,它对你的项目也许并不是最佳方案。这没事。同样,这只是语法:非最优并不表示是不好。对你的项目来说它不是最理想的,但并不能表明它不值得遵守。不错,对于你的项目,你并没有从中获得该有的好处,但对于一个大型公司来说,它带来的好处是巨大的。除此之外,专门针对某个项目制定编码规范一般效果会更好。一个项目拥有自己的编码风格无可厚非。但是,根据我的经验,在一个大型公司里,你最好有一个统一的编码规范,特定项目可以扩展自己特定的项目方言和结构。

我善长制定编码规范!

这应该是最常见的抱怨类型了。它是其它几种反对声音的混合体,但它却有自身态度的直接表现。有一部分反对者深信,他们是比制定编码规范的人更好的程序员,俯身屈从这些小学生制定的规范,将会降低代码的质量。对于此,客气点说,就是胡扯。纯属傲慢自大,荒唐可笑。事实上他们的意思就是,没有人配得上给他们制定规范,对他们的代码的任何改动都是一种破坏。如果参照任何一种合理的编码规范,你都不能写出合格的代码,那只能说你是个烂程序员。

当你按照某种编码规范进行编程时,必然会有某些地方让你摇头不爽。肯定会在某些地方你的编码风格会优于这些规范。但是,这不重要。在某些地方,编码规范也有优于你的编程风格的时候。但是,这也不重要。只要这规范不是完全的不可理喻,在程序的可理解性上得到的好处会大大的补偿你的损失。

但是,如果编码规范真的是完全不可理喻呢?

如果是这样,那就麻烦了:你被糟蹋了。但这并不是因为这荒谬的编码规范。这是因为你在跟一群蠢货一起工作。想通过把编码规范制定的足够荒谬来阻止一个优秀的程序员写出优秀的代码,这需要努力。这需要一个执著的、冷静的、进了水的大脑。如果这群蠢货能强行颁布不可用的编码规范,那他们就能干出其它很多傻事情。如果你为这群蠢货干活,你的确被糟蹋了—不论你干什么、有没有规范。(我并不是说罕有公司被一群蠢货管理;事实很不幸,我们这个世界从来就不缺蠢货,而且很多蠢货都拥有自己的公司。)


本文来自外刊IT评论网(www.aqee.net),原始地址:为什么谷歌要执行严格的代码编写规范

相关 [it 谷歌 代码] 推荐:

【外刊IT评论网】谷歌是如何做代码审查的

- etalkr - 牛博山寨 编辑推荐
本文是从 Things Everyone Should Do: Code Review 这篇文章翻译而来. 在上一篇文章中提到过,我已经不在Google工作了. 我还没有想清楚应该去哪里—有两三个非常好的工作机会摆在我面前. 因为在这段做决定时间里,我不再受雇于任何人,我想可以写一些专业性的东西,一些很有趣,但也会在同事和管理工作中导致关系紧张的东西.

[下载]谷歌电吉他源代码和在线演示

- Zhenbo Xu - cnBeta.COM
为了纪念电吉他之父莱斯・保罗(Les Paul,1915年6月9日-2009年8月13日)诞辰96周年,Google Doodle又出神作,首页的Logo被设计成一个电吉他形,并且鼠标滑过会弹出美妙的音乐,当你按下键盘图标时,还可以直接用键盘弹奏这个“电吉他”. 弹了几下,发现自己很有音乐天赋呢,于是决定保存下来,永久收藏.

谷歌开放实时通信框架WebRTC源代码

- 天绝@Lee - cnBeta全文版
谷歌今日宣布向开发人员开放WebRTC架构的源代码. WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌去年以6820万美元收购收购Global IT Solutions公司而获得一项技术. 谷歌今日在官方博客中称:“我们希望让浏览器成为实时通信的创新地所在,到目前为止,实时通信需要使用受版权保护的信号处理技术,并通过插件或下载客户端才能实现,而WebRTC则允许开发人员使用HTML和JavaScript API来创建实时应用.

谷歌是如何做代码审查的

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

为什么谷歌要执行严格的代码编写规范

- Ken - python.cn(jobs, news)
# 本文是从 Stuff Everyone Should Do (part 2): Coding Standards 这篇文章翻译而来. 本篇是谷歌是如何做代码审查的的续篇. 我们在谷歌所做事情中另外一个让我感到异常有效、有用的制度是严格的编码规范. 在到Google工作之前,我一直认为编码规范没有什么用处.

谷歌 Android 4.0 源代码公布,一起来吃冰激凌三明治吧

- 请叫我火矞弟 - Engadget 中国版
但凡用 Android 设备的人都很关心自己的系统版本,现在看来冰激凌三明治已经近在咫尺. 谷歌的 Android Open Source Project 开源项目网站今日开始提供 Ice Cream Sandwich 的源代码,不过由于一些变化因素目前的代码还需要一段时间来完成. 也就是说,现在的代码还不是最终完全版,所以要等全部部署完毕之后才可以下载到完整版,那些开发者以及 ROM 固件的制作者需要一些耐心了.

【外刊IT评论网】为什么谷歌要执行严格的代码编写规范

- 风子 - 外刊IT评论网
本文是从 Stuff Everyone Should Do (part 2): Coding Standards 这篇文章翻译而来. 本篇是谷歌是如何做代码审查的的续篇. 我们在谷歌所做事情中另外一个让我感到异常有效、有用的制度是严格的编码规范. 在到Google工作之前,我一直认为编码规范没有什么用处.

来自谷歌的开发心得:所有SQL和代码,都没必要藏着掖着

- - InfoQ - 促进软件开发领域知识与创新的传播
至少从工程技术的角度看,你的项目绝没有想象中那么“见不得光”. 谷歌在代码管理上很有特色,他们基于“主干”进行开发,并且将 90% 以上的代码放在名叫 Piper 的单一代码仓库中,由来自世界各国数十个办事处的数万名软件开发人员共享. 对于那些开源的、需要外部协作的项目,代码才放在版本管理软件 Git 里,主要是 Android 项目和 Chrome 项目.

HTML5视频编码器市场新三国演义:谷歌近期将公布VP8视频编码器的开源代码

- Alan - cnBeta.COM
据多方消息来源透露,谷歌将很快公布其VP8视频编码器的开源代码,据悉谷歌公司将在下个月召开的谷歌I/O开发者大会上公布这款编码器的开源代码,与此 同时,火狐的开发商Mozilla公司以及谷歌Chrome浏览器则会同时宣布支持使用这款编码器的HTML5视频回放功能.