返回信息流先说下编程语言,普遍地一直总有两种态度,一种只专注一种语言,对其它要么不宵,要么被问到时避而不答;一种是涉猎各种语言,关于各个语言总能说出个所以然来,例子也能举出不少。这个论题要讨论起来随随便便都能吵出坑来,而我无意引起论战。我个人的观点是处于启蒙阶段时,各个语言要有所涉猎,到实践阶段时,要专注于某一两种语言。
事实上,在实践中只用到一种语言是不可思议的,譬如做数据库的可能用到JAVA和SQL,做引擎的可能用到C和汇编,做终端的可能用到python和C++。现实决定了程序员必然要接触1种以上的语言,那么我们就没必要对我们目前未学到或不善长的语言有排斥感。
第三篇:
有关代码规范的思考:
以前曾学过代码规范的相关内容.有关代码规范,随着代码实践的深入,我对代码规范有些
自己的思路,说出来跟大家讨论下.
目的:以前经常听别人说,你代码要规范,这样别人看你的代码就不用太费劲了.我以前也这
么想,但几年的代码实践后,我现在认为这是一个误区.并且影响很坏.因为容易导致程序员
忽视规范的重要性,认为它是为了"给别人看的",这样无法触及程序员的直接利益,谁又会
把它放在心上呢.我认为:代码规范的目的是为了保证程序质量.
概念:代码规范是代码尽量遵循的书写标准.它不是由个别牛人突来灵感而创造出来的,而
是无数程序员在代码编写时遇到错误,解决错误的过程中积累的经验总结.遵循代码规范
可以有效地保障代码质量.
好,我们依旧记住这原则,任何事物都是有源头的.我们来看看一些规范.
举例:
1.行最大列 65~75:我们用VC的VA插件,或看别人的代码时,或用elipse时,时不时会注意到
行最大列,通常为65~75.有人跟我夸过,看看别人的代码,多规范,每行必不超过多少个字符.
我说,你知道到底是多少个字符么?你知道为什么一定要这么多字符么?我做了猜测了一下
(没见过哪本书写过这个),先说65,通常我们字符为12宽,即12像素,65*12=780,我们不熟
780,但我说800,总比较熟吧.我们早先用的电脑不就是800*600的分辨率么.所以每行65,
就可以保证代码在800*600的屏幕下可以有很好的显示效果.再大就超过屏幕了,能不定为
65么?65以上的值也许是后来的人增加上的.(各位可以考证下VA的此缺省值为多少)
2.enum 首值问题,很多代码喜欢设第一值为eNone=0,并且往往第一个值是不用的.即:
enum{eNone=0,eFirst,eSecond};有人跟我说了,他们就是用0为第一个参数的,为什么
不用呢.即enum{eFirst=0,eSecond};我说,任何代码都是有可能出错的,一旦程序混乱,
那我们的值有两种可能:为零或随机值.可能性最大的是随机值,然后是零(1%~30%),
我们期待的值的可能性为极小(1/无穷).如果使用前者的规范,程序混乱的情况下,我们
被通知的概率为(100%-(1/无穷)),如果使用后者,那么我们会有较大的概率不会被通知到.
即当我们发现参数值为0时,你甚至无法确定你的程序是否还在正常运行.直接地说:后者
的写法对程序质量是有隐患的.
3.单一入口与出口的函数实现:有个规范,即要求函数"尽量"有单一入口与出口.入口容易
理解,单一出口就是说只有一个return,并且只在最后return.就这么简单.为什么不多个出
口呢?我在工作中遇到了.开始时函数里一入口多出口,由于函数中用了锁,结果是一个Lock
和多个UnLock.本来运行好好的,后来增加了功能,又多了个return.编写者不注意(或者根本
就是另个人来接的代码,对原先的代码就不了解),没有在return前UnLock,结果现象就是
增加功能后,程序时不时出现死锁现象.责任人很委屈地说他根本没用锁的功能,怎么就这
样了呢.
4.命名规范:这里没有固定的模式,就是想讨论下,如何命名比较合适.我只找最合适的,而不
是最权威的.举例下,有个About的对话框,我们是用CAboutDialog还是用CDialogAbout
好呢?我发现VC中用前者.但我喜欢后者,为什么呢?因为在类列表,或在文件列表中,我能很
容易找到CDialogAbout,CDialogInput等相似的类,因为它们都有相同的前缀CDialog,排列
起来很整齐.再举例如CConfigXml,CConfigIni,CConfigTxt,感觉整齐也好找.当你的类达到
一定数量时,这种规范显然是对开发有益的.
所以我们在实践中,既要遵循规范,又不要崇拜规范.它只是前人无数失败的经验总结.合理
掌握它只是让我们少走些弯路.
代码规范的最终目的不是"为了别人",而是"为了自己";最终效果不是为了代码更好看,而是
为了代码更健壮.--
这是一条镜像帖。来源:北邮人论坛 / cpp / #12463同步于 2008/9/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
有关语言
kissme
2008/9/11镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
re.
我一直认为一种语言对应一种思维方式。(不论是编程语言还是人说的语言)在小说《1984》中的统治者为了达到控制人民思想的目的就不停地删减语言中的词汇,创造所谓的“新话”。在“新话”中没有“自由”或是能表达相近意思的词,也就没人想得起来要争取“自由”;同一个形容词在用于“祖国”、“人民”时为褒义,在用于“敌人”时为贬义,于是没人能够贬低“祖国”和“人民”。
语言之于人就像道路之于汽车,没有道路的地方很少有人想得起来要开车过去。
对于编程语言来说也是这样,每一种语言都有各自不同的特性,对同一种问题的看法角度都不尽相同,可行的解决手段也各不一样。只有多了解不同的语言,在解决问题的时候才能让思维不至于被限制在当前语言的框框里。
【 在 kissme 的大作中提到: 】
: 先说下编程语言,普遍地一直总有两种态度,一种只专注一种语言,对其它要么不宵,要么被问到时避而不答;一种是涉猎各种语言,关于各个语言总能说出个所以然来,例子也能举出不少。这个论题要讨论起来随随便便都能吵出坑来,而我无意引起论战。我个人的观点是处于启蒙阶段时,各个语言要有所涉猎,到实践阶段时,要专注于某一两种语言。
: 事实上,在实践中只用到一种语言是不可思议的,譬如做数据库的可能用到JAVA和SQL,做引擎的可能用到C和汇编,做终端的可能用到python和C++。现实决定了程序员必然要接触1种以上的语言,那么我们就没必要对我们目前未学到或不善长的语言有排斥感。