C/C++代码格式规则中比较有争议的几处
来源:互联网 发布:mysql数据库清空所有 编辑:程序博客网 时间:2024/06/05 02:41
原地址:http://bbs.csdn.net/topics/320120108
从一个人的代码格式,其实可以猜出此人的C/C++大致水平,凡是写过正式项目的人,代码风格不会太差的,有些代码风格规则得到了普遍认同,有些确仍存争议。
下面列举一些仍存争议的代码风格。
1.空参数的函数是否得用fuc(void)格式
多次在一些书里看到空参数的函数得用void来填补形参表,但是在实际编程以及见到过的许多项目里——无论是开源项目还是微软的一些库,fuc()仍然是很普遍的写法。
观点:是否加void对于代码逻辑本身没有任何影响,可读性上差别也不大,除非项目硬性要求或者初学的时候养成了习惯,个人感觉是不是一定要加void不那么重要。正因为如此,fuc()仍然大行其道,通常也不被看做明显的风格缺陷。
2.大括号的对齐
1
2
3
4
5
6
7
8
9
if
()
{
}
if
(){
}
这两种代码那种风格更好呢?VC、VA、Eclipse的自动格式化倾向于前者,但是有许多开源项目和教材上的代码又明显是由后者,谁优谁劣恐怕又要牵涉到操作系统和编程环境的口水仗了……很明显,微软提倡的代码风格明显属于前者,而后者在开源项目中大量出现。
观点:入乡随俗,在VC里写后者不伦不类,跟着VS+VA的自动格式化走吧;Linux下倒是随便,看项目组整体的要求。
3.单行循环和单行条件的大括号是否省略
一般书上说任何时候都加大括号是比较好的选择。当然,保证没有歧义的情况下(主要是if、else的歧义),不加括号也能让代码显得更紧凑。
提到这点主要是反驳一个观点——有人说加不加括号会造成效率差别……这完全是无稽之谈,经过测试,在VS2008中,无论什么优化选项,单行循环加不加括号生成的汇编代码都是一样的,如果你是TC测出的效率差别,那只能说编译器太烂了!
观点:我个人的观点倒不像书上那么绝对(任何时候都加)。我感觉条件语句加括号避免歧义是应该的;而单行循环一般没有歧义,而且不加括号显得很紧凑,我推荐不加;那种多层的循环和条件,加括号增加可读性,最好加上。
4,变量初始化
本来没有任何争议,但是无论谭浩强的书还是“权威”的K&R的书做的都不好,才造成了许多人认为不初始化才是“权威”。
观点:没什么说的,不初始化的人一看就知道没写过几行代码,没有为那种因为不初始化而造成的bug烦恼过。
5.变量声明位置
由于受变量位置较严格的C标准影响,许多人似乎喜欢在头部一股脑的把变量声明完。这自然是有道理的,纯C编译器要求这样声明(比如VS2005、VS2008加上/TC选项或者使用extern "C")。不过C++里的兼容的C就没这个限制了,因为C++可能有较大的自定义类型,开始就声明有效率损失。
观点:请看你的编译器,C++的自由方式自然好,但如果编译器限制就没办法了。我提醒注意的是,如果C++方式编译,就没有必要死抱C的声明格式了。
6.短代码的换行
1
2
3
4
i++;j--;
{
return
0;}
。。。。。
在项目代码中我们经常能看到这样的代码,因为短小,就没有换行了。
观点:我看这种代码总是不舒服,特别是那个return 0;我宁可直接把括号去了……
0 0
- C/C++代码格式规则中比较有争议的几处
- [C++] 有争议的代码风格
- 同感《C有C的规则》
- C/C++ 代码规范: 命名规则、注释、格式
- 由C/C++ 争议想到的
- 比较难懂的c代码
- C#-代码书写规则
- C语言中有规律的代码的生成方法
- Keil中C语言汇编代码比较
- C表达式中出现有符号数和无符号数时编译器处理的规则
- C语言编写的一些上机题目代码,里面有比较基础的题目
- c中各种++的比较
- C语言中声明的优先级规则
- C语言中位移运算的规则
- 【C】比较数组中有或没有相同的数,有就输出"有",没有则输出"没有"
- 优化C代码常用的几招
- 优化C代码常用的几招
- 优化C代码常用的几招
- ognl 取得request、session 的值
- indent-C语言代码格式化工具
- 鼠标,控件,互动
- 一个小程序看代码规范
- 素数筛选【模板】
- C/C++代码格式规则中比较有争议的几处
- 链表的partition
- poj2411 状态压缩dp
- Xenomai user irq 示例
- apk反编译和重新打包
- 世界杯的中国元素——英利公司
- 最大熵模型学习笔记李航统计学习
- 解决windows端口被占用
- 微软爆史上最大规模裁员 七分之一员工被“炒”