随笔-90  评论-947  文章-0  trackbacks-0

如题,大致看了下网上能找到的一些规范,觉得大体有这么三个方面吧,一个是排版方面的,一个是命名方面的,一个是书写逻辑方面的。

排版方面的大概有,如何缩进,如何使用空格、换行,等等。命名方面的包括变量、函数、类、文件的取名等等。书写逻辑方面的就比较多了,可能包括:
是否全面使用异常、出错处理资源清理如何组织、如何利用编译提示防止常见错误……

一时间列不全。网上常见的文档我会参考的。除此之外,想从大家这里征求下,以上几个大方面之外,还有没有比较重要的方面?大家日常工作中有没有遇到一些特别希望别人也使用和自己一样的方式做的事?以及,哪些规定比较容易被推动?哪些规定不容易被推动?如果有一个规则强加在你头上,你会有怎样的心理?等等……

如果您有想法,请回复下,我们讨论讨论^_^

----------

顺便再问个问题,Windows 上的开发,大家喜欢动态链接 CRT(/MD、/MDd) 还是静态链接 CRT(/MT、/MTd)?为什么?个人倾向于哪种?在公司里又是怎样做的?

posted on 2011-07-12 22:22 溪流 阅读(2091) 评论(17)  编辑 收藏 引用 所属分类: C++

评论:
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-12 23:08 | kongque
我觉得自己重新拟定一份的必要性不是很大。可以参考一份现成的,比如microsoft的匈牙利命名规范或者google c++编码规范。这个好处是,一可以省去重新拟定规范的功夫,二来这种规范知名度高,具有一定的权威性,容易被人接受。

本人以前做过游戏开发,倾向于动态链接库链接,公司也是那么作的。
  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-12 23:24 | fx
参考大公司的成功项目,比如webkit, 对编程要求严格至极,tab和空格都限定。http://blog.csdn.net/huangc1982/article/details/5597156

至于手下是不是听你订的规范,有两点,1. 规范本身必须合理。2. 来头要大,名气要大,权威。

静态和动态链接都是些个人喜好问题。个人而言,小项目静态,大项目动态。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-12 23:31 | 陈梓瀚(vczh)
.NET曾经出了本告诉你怎么设计framework的书,里面就有说到这个事情。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 00:01 | airtrack
1、四格缩进,整体简洁统一,函数不要太长,一般不超过30行。
2、只要是非匈牙利命名法觉得都可以(最讨厌匈牙利命名法,看了《观止》之后发现卡特勒也很讨厌它,我就更加坚定了),比较喜欢google的命名方式。
3、逻辑简洁,函数和类单一职责,RAII,个人比较倾向使用异常,异常能够让代码更整洁的处理错误。当然公司的话,看项目是怎么定的了。

特别希望其他人提交到库里面的代码没有注释掉的代码,最讨厌看到注释掉的代码。函数不要太长,类不要太大,一切都是为了单一职责。
被强加的规则,好的接受,不喜欢的也得接受,因为自己不是老大。

Windows上开发的程序个人倾向静态链接,一是用的都是最新的VS(目前用VS2010),为了让程序在没有装CRT机器上运行;二是个人开发的程序不大,静态链接体积也大不了多少。
公司开发一般都是动态链接。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 09:32 | 空明流转
@airtrack
VS2010哪来的static runtime。。。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 09:33 | 空明流转
@airtrack
好吧, 我错了,看走眼了。
  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 09:38 | 空明流转
@fx
google那种规范,完全就是垃圾,之所以被奉为圭臬,还不是因为来头大。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 13:37 | 溪流
@kongque
也不是说完全“原创”,这些东西很多可能与网上流传的大公司规范都有重叠,但我们希望挑一些适合我们自己的,而不是完全照搬。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 13:38 | 溪流
@kongque
@空明流转
我也不是很喜欢google的规范,有些地方过于保守,有些地方也根本不认同  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 13:39 | 溪流
@fx
谢谢提供参考,这份规范觉得还挺中肯。
到最后我们自己团队里要通过才行,我没有手下,只是起草这个事情。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 13:40 | 溪流
@airtrack
虽然匈法一直饱受争议,但是非匈以后,命名真的清爽了吗?尤其是对于C++来说。这点我还是犹豫不决,也请楼下的多给点自己的观点。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 16:33 | 空明流转
匈牙利命名法暴露了变量的物理细节。
这根本就是扯淡。
对于静态语言,物理根本就是编译期能保证的,何须变量?  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 16:38 | 空明流转
至于member flag char,在标准库的设计风格里,是为了区分开interface, member variable和local variable的区别。

因为在变量进行最直观化的命名时,能区分出来的只有它的实际含义/用途,但是对于它工作的上下文(例如作用域)并没有任何体现。比方说,你成员变量和获得该成员变量的接口,都可以叫size。

这个问题在标准库中尤为明显。有一些例如接口首字母大写,变量用camel这样的办法还好一点。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 17:39 | fx
一个参与者众多的软件项目,要成功是很困难的。并不是盲从webkit, 我个人写程序也不是webkit style, 只是团队合作不能没有个准绳,所谓team work, 就是要牺牲一部分个性,来换取整体代码的协调性。。

  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-13 22:02 | airtrack
匈牙利命名法的一个及其明显的弊端,比如:
开始定义了一个 int nSize;使用了一段时间后,被后面维护代码的人因为某种需求改成了DWORD(或者其它类型),那是不是这个变量也要跟着改成dwSize才能符合匈牙利命名法,但是如果这个变量被很多地方使用,改起来岂不是很麻烦。虽然可以通过VA来rename,但是在团队开发中,团队成员不一定会去把变量名同步修改。
当然这只是个例子。
另一方面我非常赞同空明流转兄,我觉得变量类型编译时期就确定了,没有必要这么去在变量名里面暴露类型。而对于动态语言的话,那类型更加不确定,随着运行的过程,变量可以是任意类型,所以我觉得变量是要表达你所要代表的意思而不是类型。像上面那个例子的变量名为size就行,表达出它的作用就行,当然可能还会具体些,命名为xxx_size。
在C++模板中,模板中的代码类型更加不确定了,自然不能把类型写到变量名中。  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-07-14 23:45 | VGA采集卡
命名需要规范,找一个大家都能接受的就可以了,追究那么多细节耽误工夫  回复  更多评论
  
# re: 如果要拟定一份代码规范,哪些内容应该列入? 2011-08-26 11:51 | belstaff uk
grow up, will slowly understand the ways of the world, learn the streets and   回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理