免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1686 | 回复: 9
打印 上一主题 下一主题

关于code style of C [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-07 18:12 |只看该作者 |倒序浏览
Multiple declarations can go on one line, but if the line gets too long don't try to continue it in some fancy way, just start a new declaration on the next line. Avoid declarations in all but the most complex inner blocks. Avoid initializations of automatic variable in declarations, since they can be mildly disconcerting when stepping through code with a debugger.

上面这段话中的"Avoid declarations in all but the most complex inner blocks" 是什么意思啊? 请赐教, 谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-08-08 16:57 |只看该作者
应在最内层的复合块体内声明变量,而不是其他地方。

意思就是在需要用到某个变量的地方才声明它,这样可以控制变量的作用范围。
如:
这里变量temp在用到时候才声明,循环体外temp不复存在。
int i, j;
for (i = N; i > 1; i--)
     for(j = 1; j < i; j++)
      {
           if (a[j] < a[j-1])
             {
                    /*temp在用到时候才去声明 */
                    int temp = a[j];
                    a[j] = a[j-1];
                    a[j-1] = temp;
             }
      }


而不应该采用这种形式:
int temp;
int i, j;
for (...)
....

论坛徽章:
0
3 [报告]
发表于 2006-08-08 17:17 |只看该作者
不知道LZ在看什么书哦?

论坛徽章:
0
4 [报告]
发表于 2006-08-09 08:51 |只看该作者
"Standards and Style for Coding in ANSI C"

论坛徽章:
0
5 [报告]
发表于 2006-08-09 11:27 |只看该作者
没看过,哎
看的书少了,感觉什么都不懂,E文的东西更没看过了,E文水平太烂了,
只有看中文的份,
支持LZ看下去

论坛徽章:
0
6 [报告]
发表于 2006-08-09 15:24 |只看该作者
Avoid declarations in all but the most complex inner blocks.
对照上下文,我觉得应该翻译为:除了在复杂的内部块里,应该避免把变量声明在一行。

这一句看上去怎么好像在讲C++的东西啊?
在写代码的时候,应该尽量避免把相同类型的变量放在同一行去声明。因为放在同一行,不方便加注释,而且也容易出现别的一些错误,不易阅读。比如:
int*  address, val;
阅读的时候很容易产生错觉,觉得val也是int *类型,实际上val是int型的。而且写在一行不利于加注释。良好的代码风格应该在一些不能自说明(也就是光看变量的名字不知道是做什么用的)的变量声明的后面加上注释,说明此变量的用途。
例外的就是在一些比较复杂的块里,如果用到了几个局部变量,如果一个变量一行地写,那么会把程序块拉得很长,不紧凑。对于阅读这些代码的人来说,看到前面看不到后面,不连贯,不利于阅读。而且在程序块里的变量,一般说来,都是临时变量,很容易通过程序上下文环境看出是做什么用的,加多余的注释反而影响阅读。

论坛徽章:
0
7 [报告]
发表于 2006-08-09 15:55 |只看该作者
同意namtso.

Avoid declarations in all but the most complex inner blocks.

应该分解为
Avoid declarations in all,      but the most complex inner blocks.

论坛徽章:
0
8 [报告]
发表于 2006-08-09 16:04 |只看该作者
Great comments!  

thank you all very much.

论坛徽章:
0
9 [报告]
发表于 2006-08-09 16:05 |只看该作者
原帖由 思一克 于 2006-8-9 15:55 发表
同意namtso.

Avoid declarations in all but the most complex inner blocks.

应该分解为
Avoid declarations in all,      but the most complex inner blocks.

照这样理解,意思仍然是“不要把定义分布在所有的内部块中,放在最复杂的哪个里面”,是二楼的意思挖

而且再怎么看也不应该是“不要把多个变量定义在一行的意思”

论坛徽章:
0
10 [报告]
发表于 2006-08-09 16:11 |只看该作者
你的理解可能有误。

意思是避免将声明搞在一起(IN ALL) (比如放在一个行中),
但对于复杂的结构内部可以列外(BUT)

不是2楼的意思。是我帖子前面的那位的意思

---------------------

原帖由 isjfk 于 2006-8-9 16:05 发表

照这样理解,意思仍然是“不要把定义分布在所有的内部块中,放在最复杂的哪个里面”,是二楼的意思挖

而且再怎么看也不应该是“不要把多个变量定义在一行的意思”
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP