编码原则十日谈.doc

上传人:cl****1 文档编号:545099682 上传时间:2024-02-20 格式:DOC 页数:18 大小:166KB
返回 下载 相关 举报
编码原则十日谈.doc_第1页
第1页 / 共18页
编码原则十日谈.doc_第2页
第2页 / 共18页
编码原则十日谈.doc_第3页
第3页 / 共18页
编码原则十日谈.doc_第4页
第4页 / 共18页
编码原则十日谈.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《编码原则十日谈.doc》由会员分享,可在线阅读,更多相关《编码原则十日谈.doc(18页珍藏版)》请在金锄头文库上搜索。

1、编码原则十日谈编码原则十日谈2008赵凯阿里巴巴软件(上海)有限公司2008-10-8修订历史记录:修订说明修订日期文档版本作者创建2008/10/080.01赵凯目录1.前言41.1.为什么写这篇文章41.1.为什么要有编码原则/规范41.2.编码原则的两条指导思想41.2.1.客户第一51.2.2.勿以恶小而为之,勿以善小而不为51.3.高手的定义和高手追求的目标61.4.程序员的美学修养71.5.编码的十条原则72.第一天:好的软件是开发出来的,不是测出来的83.第二天:使用别的库之前,要先理解再用83.1.为什么要先理解再用93.2.关于Boost93.3.关于字符串类103.4.本章

2、总结104.第三天:写代码时,一定要想着别人105.第四天:代码是用脑子写的,而不是用手116.第五天:任何警告可能都是致命的127.第六天:使用和平台相同的编码规范138.第七天:有怪异的BUG?相信科学149.第八天:缩写要慎用,宁可写全称,也不要有歧义1510.第九天:代码不可太长,函数不可有太多的语句1511.第十天:在合适的地方加上空行和注释1611.1.关于空行1611.2.关于注释1712.总结171. 前言1.1. 为什么写这篇文章编写本文档的最初目的,是为研究院平台研发一部制定一套C+编码规范,以提高编码质量,进而提高软件产品的质量。在下笔之前本人一直在思考,为什么以前也有编

3、码规范,但一直没有很好的效果呢?其实制定编码规范容易,执行编码规范难,难在要先让大家从心里接受编码规范,彻底理解编码规范的重要性。正是因为这个原因,在本文中,并没有真正灌输具体的编码规范,而是从根本的角度分析编码规范的必要性,同时定义什么是真正的高手,以及如何写好代码等。在本文档中,对编码过程,提出了十条原则,希望读者读完本文之后,分十天,每天理解一条原则。真正的规范,不是写在纸上的,而是应该留在心里面。本文档虽名为编码原则,其实更重要的是倡导一种编码的艺术,所以本文档的目标读者可以是所有的开发工程师,而不仅仅是C+开发工程师。1.1. 为什么要有编码原则/规范认为原则或者规范是用来约束人的想

4、法,是完全错误的。与之相反,原则指导人们如何做事会感到身心愉悦,从而使事情变得简单,使事物趋向完美。古语说:“不以规矩,不成方圆”,并不是说没有规矩,就不让人去做方圆,就做不出方圆,而是说如果有了规矩,可以很轻松、方便地做出方圆。编码原则是也是所有原则或者规矩的一种,没有编码原则,显然也可以编码,但有了编码原则,就会让编码的过程变得轻松、简单,会让代码看上去赏心悦目,会提高编码的效率,更会提高产品的稳定性、可靠性和可维护性。其实规范或者原则,在对个体的行为做了一些约束的同时,实际上建立了整体的一个秩序和稳定性,而整体的秩序和稳定性又反过来影响个体,使个体的效率更高。非常简单的一个例子就是路面上

5、的红绿灯,有了红灯的限制之后,虽然车会暂时停一下,但整个路面的交通变得有秩序,计算下来每辆车的车速其实都在提高。这就是规范和原则带来的好处。现代软件开发,都是由团队合作完成的,一个人基本上不太可能完成一个中等规模以上的软件。如果一个软件是由很多人共同参与完成,但是代码看上去就好像是同一个人写的,那几乎可以确定,这个软件绝对是一个优秀的软件,而且注定会载入史册。这个团队也可以面对任何挑战,百战百胜。1.2. 编码原则的两条指导思想要编写优秀的代码,其实很简单。众多原则可以概括成两条指导思想:l 客户第一l 勿以恶小而为之,勿以善小而不为如果能充分理解这两句话,后面的内容其实就没有必要看下去了。当

6、你某一天已经忘掉这篇文档,但编写出来的代码仍然美观,程序仍然稳定,别人在看你代码的时候不会抱怨的时候,说明你已经完全理解这两句话了。本小节会对这两条指导思想做一个详细的说明。1.2.1. 客户第一客户第一是最重要的。客户第一,简单的四个字里,蕴藏着大智慧。做到客户第一,让客户满意;客户满意了,自己当然会得到更多。这其实就是预先取之,必先予之的道理。从广义上讲,任何自己以外的人,都可以算作是客户。从编码的角度来看,以下人员都可以称之为客户:l 调用你模块的人l 可能阅读你代码的人l 可能拷贝你代码的人l 可能修改你代码的人l 测试人员l 从这个角度上看,在一个团队里,每个人都是你的客户,而你同时

7、也是每个人的客户,任何人都不可能独善其身。所以在编写代码的时候,心里一定不能只想着仅完成自己的工作,更重要的是要考虑客户使用你的产品(代码)的成本。很简单的道理,如果你不考虑客户第一,那么别人在用你的代码时就会迷惘,就必须要花费更多的时间,同时也会经常过来问你,这样你也浪费了很多时间,计算下来大家的时间都浪费了。如果每个人都能坚持客户第一,这就是人人为我,我为人人的和谐团队。从编码上讲,客户第一,就是要做到让上述的客户在使用你的代码时心情愉悦,让他们可以无障碍地使用你的代码。如何做到这一点?只要每个人都遵守编码的规范和原则。1.2.2. 勿以恶小而为之,勿以善小而不为很多事情,之所以向不好的方

8、向发展,可能都是起源于某个时刻一个很小的恶念,这种例子举不胜举。交通事故的发生,往往是因为开车前喝了点小酒、遇到马上要变红灯的时候急于冲过去、甚至可能仅仅是因为在不该停车的地方停了一下,导致后面的车撞过来等等。在一个项目里,写代码的时候,因为偶尔的偷懒而导致严重后果的惨痛经历,相信很多人都有过,例如在分配内存的时候,认为肯定会分配成功,就懒得去检查,结果某一天内存分配失败了,程序就崩溃了。再小的恶,也可能导致致命的问题。在编码的时候,如果脑子里冒出了想偷懒的想法,那一定不要偷懒,因为现在偷懒了一下,感觉少写了几行代码,好像省了点时间,以后可能要花费百倍的时间来补救,得不偿失。有时候有些不好的代

9、码运行效率不高,这时候也不能认为这么点性能损失无所谓,因为很可能这个代码会经常被别人调用到,一点点的性能损失乘上一个调用次数,可能就是一个很大的性能问题了。经常有人在有些时候,脑子里会闪过这样的观点:“何必这么迂腐?”,然后就做出了违背原则的事情。岂不知,这正是脑子中一闪而过的恶念。晚上过马路的时候,遇见红灯而路上并没有车,很多人就会想:“为啥这么迂腐?既然没车,我就过去好了”,很有可能你在过去的时候,正好一辆车过来,就出事故了。遵守原则的人是值得尊敬的,绝不是迂腐。一闪而过的善念,如果做了,可能会给别人带来极大的便利。这个案例在聊斋里面最多了(聊斋里有很多由于一念之善,放生了一只小动物,后来

10、受用无穷的故事,_)。哪怕是写完程序顺手按一下ALT+F8(Visual Studio中的格式化代码的快捷键),把代码弄得整齐一些,以后有人看你的代码的时候也会比较舒服一些。代码写的是否优美,对于编译器和编译之后运行来说,或许没多大影响,但这个虽然是小善,如果做了,就会对整个软件产生正面的影响。举手之劳可以做得更好的事情,一定要抢着做,善莫大焉。积小恶为大恶,积小善为大善,勿以恶小而为之,勿以善小而不为,与各位读者共勉。1.3. 高手的定义和高手追求的目标在各行各业里,高手总是让人尊敬,人人都希望成为高手,很多人都会很崇拜高手。但很多人对高手并没有一个正确的定义,正是因为没有理解什么是真正的高

11、手,导致成为高手的路上走了很多冤枉路,崇拜错了对象。这里的高手,不仅指的是软件上的高手,而是指任何一个行业中的高手,例如武林高手,烹饪高手,甚至是杀猪的,扫地的高手等等。三百六十行,行行出状元。人们一般会认为,高手就是在某个行业里出类拔萃的人,他们拥有一般人所不具备的特殊技能,可以很轻松地完成某项任务。这个观点有一定道理,但只是一个并不算太重要的条件。仅仅满足这个条件的人,是属于武侠小说中常见的那种寻常好手,例如山西彭家五虎断门刀,巨鲸帮,海沙帮之类的,虽然比整个武林中大多数人要厉害,但完全称不上高手。某个行业最厉害的人,不是他的技巧最厉害,肯定是别的方面。寻常好手,追求的目标是术,是各种技巧

12、、方法;高手追求的是道,是各种内在的规律和原则,或者反过来说因为追求的是道,所以成了高手。明道优术,道为术之灵,术为道之体;以道统术,以术得道。如果理解了某个行业的道,自然精通这个行业的术。所以某个行业中的高手,就是明白了这个行业的道的高人。他们行事看似随意,其实里面自有分寸,举手投足无不恰到好处。如果还是不清楚什么是高手,可以回想一下以前上学时候,周围是不是有些人,平常看上去也并不是很用功学习,但是成绩确是非常的好,学什么都特别快,而且对知识的理解超过一般人,绝不是靠死记硬背。仔细回想一下他们平常是如何学习的,或许对理解什么是高手有一定帮助。再举一个例子,数学、物理等的公式,如果硬记是非常困

13、难的,但是如果自己去推导一遍,完全理解这些公式是怎么来的,那么这些公式就会留在脑子里了,根本不需要专门去记。金庸的射雕英雄传第十二章里面有一段话,很能说明问题:洪七公品味之精,世间稀有,深知真正的烹调高手,愈是在最平常的菜肴之中,愈能显出奇妙功夫,这道理与武学一般,能在平淡之中现神奇,才说得上是大宗匠的手段。对高手来说,任何花哨的东西都是多余的,都是应该剔除掉的。回到软件上来,软件开发从技术上讲,其实并没有太多有技术含量的东西,更多的只是设计和编码。当各种编程语言,各种技巧掌握到一定程度之后,就应该有更高的要求。我们可以看到很多真正的高手,无论学什么东西,总是很快就可以理解,掌握,精通。一看就

14、会,一会就精,这已经是达到了某种境界。他们不会刻意地去学习什么,但很多道理自然而然的就明白了,这就是因为他们已经接近了大道了,例如周伯通口中的王重阳就是这样的人。而且其实各行各业其实有很多相通之处,真正的高手无论做什么都会比别人成功。某种技术,学习怎么使用并不重要,重要的是你要理解他为什么要这么设计。只要你理解了为什么要这样做,怎么使用这还需要专门花功夫去学吗?高手从不崇拜任何人,但高手和高手之间惺惺相惜,互相尊敬,互相景仰,会互相探讨,一起悟道,共同达到更高的层次。这里的高手,就是古文中经常出现的一类人圣人。这一小节的目的,是希望读者明白什么是高手,从而知道自己应该怎么做,应该有什么样的追求

15、目标,最终也成为高手。最后,不要盲目崇拜所谓的高手,与其崇拜一个子虚乌有的高手,不如看一看周围,说不定在你边上就有很多真正的高手,你完全可以经常和他们切磋、悟道,一起提高。1.4. 程序员的美学修养美,指的是内在的美,并不是表面是否华丽的美。对道的追求,从某种意义上说也是对美的一种追求。美好的东西,总是使人有一种亲近的感觉,让人不由自主地喜欢它。编码的美,简单的说体现在代码是令人赏心悦目,是否有很好的可维护性、可移植性和可重用性,编译的速度是否比较快,运行是否稳定,运行速度是否比较快,等等。我们在编写代码,或者阅读代码的时候,看到乱七八糟的代码,总是会觉得很烦躁,如果编译代码要很长时间,更是让人觉得软件开发是一件非常枯燥的事情。反过来,如果代码整整齐齐,有良好的命名规范,逻辑清晰,并且编译速度还很快,则会认为软件开发是一件轻松愉快的事情。这就是人们先天的,追求美好事物,摒弃丑恶事物的习性。有了正确的审美观,有助于平常的工作和生活中发现和创造美好的东西,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号