谷歌的编码规范
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》
我们在谷歌所做事情中另外一个让我感到异常有效、有用的制度是严格的编码规范。
在到Google工作之前,我一直认为编码规范没有什么用处。我坚信这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率的东西。
我是大错特错了。
在谷歌,我可以查看任何的代码,进入所有谷歌的代码库,我有权查看它们。事实上,这种权限是很少人能拥有的。但是,让我感到惊讶的却是,如此多的编码规范—缩进,命名,文件结构,注释风格—这一切让我出乎意料的轻松的阅读任意一段代码,并轻易的看懂它们。这让我震惊—因为我以为这些规范是微不足道的东西。它们不可能有这么大的作用—但它们却起到了这么大的作用。当你发现只通过看程序的基本语法结构就能读懂一段代码,这种时间上的节省不能不让人震撼!
反对编码规范的人很多,下面是一些常见的理由,对于这些理由,我以前是深信不疑。
这是浪费时间!
我是一个优秀的程序员,我不愿意浪费时间干这些愚蠢的事。我的技术很好,我可以写出清晰的、易于理解的代码。为什么我要浪费时间遵守这些愚蠢的规范?答案是:统一是有价值的。就像我前面说的—你看到的任何的一行代码—不论是由你写的,还是由你身边的同事,还是由一个跟你相差11个时区的距离人写的—它们都有统一的结构,相同的命名规范—这带来的效果是巨大的。你只需要花这么少的功夫就能看懂一个你不熟悉(或完全未见过)的程序,因为你一见它们就会觉得面熟。
我是个艺术家!
这种话很滑稽,但它反映了一种常见的抱怨。我们程序员对于自己的编码风格通常怀有很高的自负。我写出的的代码的确能反映出我的一些特质,它是我思考的一种体现。它是我的技能和创造力的印证。如果你强迫我遵守什么愚蠢的规范,这是在打压我的创造力。可问题是,你的风格里的重要的部分,它对你的思想和创造力的体现,并不是藏身于这些微不足道的句法形式里。(如果是的话,那么,你是一个相当糟糕的程序员。)规范事实上可以让人们可以更容易的看出你的创造力—因为他们看明白了你的作品,人们对你的认识不会因不熟悉的编码形式而受到干扰。
所有人都能穿的鞋不会合任何人的脚!
如果你使用的编码规范并不是为你的项目专门设计的,它对你的项目也许并不是***方案。这没事。同样,这只是语法:非***并不表示是不好。对你的项目来说它不是最理想的,但并不能表明它不值得遵守。不错,对于你的项目,你并没有从中获得该有的好处,但对于一个大型公司来说,它带来的好处是巨大的。除此之外,专门针对某个项目制定编码规范一般效果会更好。一个项目拥有自己的编码风格无可厚非。但是,根据我的经验,在一个大型公司里,你***有一个统一的编码规范,特定项目可以扩展自己特定的项目方言和结构。
我善长制定编码规范!
这应该是最常见的抱怨类型了。它是其它几种反对声音的混合体,但它却有自身态度的直接表现。有一部分反对者深信,他们是比制定编码规范的人更好的程序员,俯身屈从这些小学生制定的规范,将会降低代码的质量。对于此,客气点说,就是胡扯。纯属傲慢自大,荒唐可笑。事实上他们的意思就是,没有人配得上给他们制定规范,对他们的代码的任何改动都是一种破坏。如果参照任何一种合理的编码规范,你都不能写出合格的代码,那只能说你是个烂程序员。
当你按照某种编码规范进行编程时,必然会有某些地方让你摇头不爽。肯定会在某些地方你的编码风格会优于这些规范。但是,这不重要。在某些地方,编码规范也有优于你的编程风格的时候。但是,这也不重要。只要这规范不是完全的不可理喻,在程序的可理解性上得到的好处会大大的补偿你的损失。
但是,如果编码规范真的是完全不可理喻呢?
如果是这样,那就麻烦了:你被糟蹋了。但这并不是因为这荒谬的编码规范。这是因为你在跟一群蠢货一起工作。想通过把编码规范制定的足够荒谬来阻止一个优秀的程序员写出优秀的代码,这需要努力。这需要一个执著的、冷静的、进了水的大脑。如果这群蠢货能强行颁布不可用的编码规范,那他们就能干出其它很多傻事情。如果你为这群蠢货干活,你的确被糟蹋了—不论你干什么、有没有规范。(我并不是说罕有公司被一群蠢货管理;事实很不幸,我们这个世界从来就不缺蠢货,而且很多蠢货都拥有自己的公司。)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
“2015中国移动医疗产业论坛”召开通知
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 基于移动互联网技术的当下,很多行业已经在悄然发生改变。马云说:30年后不用医生,您怎么看?身在医疗卫生行业中的您是否感受到了移动互联网的冲击? 移动互联网是否肩负起了颠覆现有医疗模式的重任?移动互联网时代的医疗卫生将走出怎样的商业模式?新技术的研发将为移动医疗带来哪些改变?APP投融资火热的背后又出现了哪些问题?国家又将有怎样的导向与扶持?这个行业的未来走势如何?国内外的移动医疗产业有着怎样的异同? 在春暖花开的四月,由中关村移动互联网产业联盟移动医疗专委会(ZMH)与中国数字医疗网(HC3i)共同主办的“2015中国移动医疗产业论坛”(IFmH2015)将为您带来全新视角。本次论坛以“聚焦 分享 零距离”为主题,为您聚焦移动医疗产业发展,分享移动医疗产业***讯息和产品及解决方案,零距离接触行业专家提供最前沿的行业交流平台。 活动报名现已启动,点击下图进入报名页面! 2月1日前购票7折优惠! 2015中国移动医疗产业论坛 本次论坛为期1天(上午主论坛、下午3个分论坛),出席本次论坛的人员涵盖移动医疗产业相关的政府...
- 下一篇
Google Now API 终将开放
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 Google Now 产品总监 Aparna Chennapragada 在 SXSW 上透露,Google Now 将开放 API 给第三方应用。他还补充说道, Google 会决定什么内容能呈现在 Google Now 上。Google Now 将依靠用户习惯来预测、分析,什么是需要显示的信息,这可以缓解用户在信息过剩的状况。 同时,Google 也计划让 Google Now 更加敏感,特别是在用户习惯和用户倾向方面。举个例子,如果 Google Now 知道用户喜欢提前 2 个小时到达机场,它就会在适当的时间段作出提醒,还会展现航班信息、起飞时间等对用户有用的信息。 今年一月末 Google Now 就已整合了 40 个第三方应用,让其数据可以在 Google Now 上展现。自那时,我们就相信 Google Now 开放 API 给第三方应用并不遥远。 现阶段,Google 还未确认何时会正式开放 Google Now API。 【责任编辑: chenqingxiang TEL:(010)68476606...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主