为什么C或者C++的变量命名方式习惯于xxx_yyy_zz_xz_yx这样以下划线分割的N段字符的组合?

zengjd 2013-05-27 10:53:03
为什么C或者C++的变量命名方式习惯于xxx_yyy_zz_xz_yx这样以下划线分割的N段字符的组合?

入行开始就用C++编程,也习惯于这种命名方式,不觉得奇怪。
近年来一直在用c#或者java,习惯于简单且有意义的变量命名方式。

忽然回来发现C或者C++这样的命名方式实在不可以理解!
...全文
641 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangjianANT 2014-03-20
  • 打赏
  • 举报
回复
Certain sets of names and function signatures are always reserved to the implementation: Each name that contains a double underscore (_ _) or begins with an underscore followed by an uppercase letter (2.11) is reserved to the implementation for any use. Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.165 165) Such names are also reserved in namespace ::std (17.4.3.1). so you find many underscores in source code.
gemo 2013-05-28
  • 打赏
  • 举报
回复
下划线法带来的可读性是无以伦比的,代价是长度的增加
gemo 2013-05-28
  • 打赏
  • 举报
回复
LZ,这么做是有原因的。 考虑如下例子: 某个变量希望命名为this is a c 用java的方式 -> ThisIsAC 怎么样,是不是很怪异呢?AC是一个缩写吗? 但是用下划线 -> this_is_a_c 明白了么?
onlyhuiyi 2013-05-28
  • 打赏
  • 举报
回复
两种都用的有木有。。。
Jncryang 2013-05-28
  • 打赏
  • 举报
回复
这是分阵营的
小猪飞侠 2013-05-28
  • 打赏
  • 举报
回复
匈牙利命名法,MS的一个匈牙利engineer首先使用,然后传播开。我觉得很好。
彭家老三 2013-05-28
  • 打赏
  • 举报
回复
type_send_gpib_cmd_connect_device 我这里的函数名基本都是这样的,要是弄个10个字符以下的函数名,你都不好意思出门见人。 呵呵,开个玩笑。 据我所知的风格里有以下几种: 1,下划杠开头的:_myvalue 2,双下划杠开头的:__myvalue 3,全大写:MYVALUE 4,全小写但单词间加下划杠:my_value 5,第一个单词小写,后面的单词首字母大写:myValue 6,每个单词首字母都大写:MyValue(这种一般用于函数或类名) 其实用哪种,各人有各人的喜好,只要一个项目里的命名风格一致就没什么问题了,如果各用各的,那就乱套了。
赵4老师 2013-05-28
  • 打赏
  • 举报
回复
引用 26 楼 ADF1230 的回复:
在很久以前,我还没学C++,看了别人写的MFC的代码,VC6.0编辑器上面的,全是大写的宏,觉得真是怂的一比。 现在,我也在写这种怂的一比的代码了。。。 岁月催人老
存在即合理!
zengjd 2013-05-28
  • 打赏
  • 举报
回复
引用 33 楼 gemo 的回复:
LZ,这么做是有原因的。 考虑如下例子: 某个变量希望命名为this is a c 用java的方式 -> ThisIsAC 怎么样,是不是很怪异呢?AC是一个缩写吗? 但是用下划线 -> this_is_a_c 明白了么?
呵呵,豁然开朗啊,不过事实真的是这样么? 这算不算是意外收获。
zengjd 2013-05-27
  • 打赏
  • 举报
回复
引用 20 楼 adlay 的回复:
[quote=引用 17 楼 zengjd 的回复:] [quote=引用 15 楼 adlay 的回复:] [quote=引用 7 楼 zengjd 的回复:] [quote=引用 5 楼 adlay 的回复:] 也有很多不是这种方式命名的代码呀! 哎, 为什么空格就不能作为标示符的一部分呢, 那样就不需要 _, 大小写那些去断词了, 直接用空格分隔单词才符合人的习惯.
不是分割与否的问题,而是很多C/C++代码(尤其是开源代码)的命名方式是以_为分割的缩写单词的组合,而且动辄3段以上。着实不利于阅读。 [/quote] Java 的名字也不短呀, 三四个单词在一起的名字也常见得很. [/quote] 好吧好吧,这么说你们就明白了, 就是用N个单词缩写组合而成的变量命名方式不利于阅读。 无论什么语言。 不过我孤陋寡闻,着实发现C/C++的开源代码里这样的命名方式比较多, 还有很多宏大命名方式是纯大写字母单词组合。也感觉蛮别扭的。[/quote] 宏全大写几乎所有人都这样了. 没办法, 只有你自己去调整来习惯了, 你是不可能改变这种习惯的. 你别扭的是单词太多, 还是因为缩写, 还是因为用 _ 来分割了? 变量的长度应该是和项目的规模成正比的, 一个小程序用三四个单词的变量没有必要, 一个大项目如果全是 x, y, z, i, j, k 那就不光是别扭的问题了. [/quote] 我倒是没别扭到不想用的程度,就是有点儿感慨说出来。 没用过C做项目,基本都是C++,几年来是Java和C#。
www_adintr_com 2013-05-27
  • 打赏
  • 举报
回复
引用 17 楼 zengjd 的回复:
[quote=引用 15 楼 adlay 的回复:] [quote=引用 7 楼 zengjd 的回复:] [quote=引用 5 楼 adlay 的回复:] 也有很多不是这种方式命名的代码呀! 哎, 为什么空格就不能作为标示符的一部分呢, 那样就不需要 _, 大小写那些去断词了, 直接用空格分隔单词才符合人的习惯.
不是分割与否的问题,而是很多C/C++代码(尤其是开源代码)的命名方式是以_为分割的缩写单词的组合,而且动辄3段以上。着实不利于阅读。 [/quote] Java 的名字也不短呀, 三四个单词在一起的名字也常见得很. [/quote] 好吧好吧,这么说你们就明白了, 就是用N个单词缩写组合而成的变量命名方式不利于阅读。 无论什么语言。 不过我孤陋寡闻,着实发现C/C++的开源代码里这样的命名方式比较多, 还有很多宏大命名方式是纯大写字母单词组合。也感觉蛮别扭的。[/quote] 宏全大写几乎所有人都这样了. 没办法, 只有你自己去调整来习惯了, 你是不可能改变这种习惯的. 你别扭的是单词太多, 还是因为缩写, 还是因为用 _ 来分割了? 变量的长度应该是和项目的规模成正比的, 一个小程序用三四个单词的变量没有必要, 一个大项目如果全是 x, y, z, i, j, k 那就不光是别扭的问题了.
  • 打赏
  • 举报
回复
C习惯这样的。C没有名字空间,所以为了防止冲突都这么写很长的函数名。 很多C库都这么命名的。 C++的没见过这么命名
我看你有戏 2013-05-27
  • 打赏
  • 举报
回复
我喜欢全小写的+下划线的,之前很不习惯,后来发现,用小写的话,助手提示方便,而且准确,大小写混合,助手反应明显会慢一些,多用下划线
zengjd 2013-05-27
  • 打赏
  • 举报
回复
引用 15 楼 adlay 的回复:
[quote=引用 7 楼 zengjd 的回复:] [quote=引用 5 楼 adlay 的回复:] 也有很多不是这种方式命名的代码呀! 哎, 为什么空格就不能作为标示符的一部分呢, 那样就不需要 _, 大小写那些去断词了, 直接用空格分隔单词才符合人的习惯.
不是分割与否的问题,而是很多C/C++代码(尤其是开源代码)的命名方式是以_为分割的缩写单词的组合,而且动辄3段以上。着实不利于阅读。 [/quote] Java 的名字也不短呀, 三四个单词在一起的名字也常见得很. [/quote] 好吧好吧,这么说你们就明白了, 就是用N个单词缩写组合而成的变量命名方式不利于阅读。 无论什么语言。 不过我孤陋寡闻,着实发现C/C++的开源代码里这样的命名方式比较多, 还有很多宏大命名方式是纯大写字母单词组合。也感觉蛮别扭的。
zengjd 2013-05-27
  • 打赏
  • 举报
回复
我还想去搞C++,可是机会不多,这么多年不整了。唉...
www_adintr_com 2013-05-27
  • 打赏
  • 举报
回复
引用 7 楼 zengjd 的回复:
[quote=引用 5 楼 adlay 的回复:] 也有很多不是这种方式命名的代码呀! 哎, 为什么空格就不能作为标示符的一部分呢, 那样就不需要 _, 大小写那些去断词了, 直接用空格分隔单词才符合人的习惯.
不是分割与否的问题,而是很多C/C++代码(尤其是开源代码)的命名方式是以_为分割的缩写单词的组合,而且动辄3段以上。着实不利于阅读。 [/quote] Java 的名字也不短呀, 三四个单词在一起的名字也常见得很.
hugett 2013-05-27
  • 打赏
  • 举报
回复
还行吧。。看着看着就惯了。。
ri_aje 2013-05-27
  • 打赏
  • 举报
回复
引用 9 楼 zengjd 的回复:
[quote=引用 6 楼 ri_aje 的回复:] [quote=引用 4 楼 zengjd 的回复:] [quote=引用 3 楼 ri_aje 的回复:] 楼主的说法让我很奇怪,下划线分割的名字就不能是简单而有意义的吗。一个名字是否简单而有意义跟用什么东西做分隔符有什么关系啊,camel case 的名字也照样可以很恶心。
你咋这么大的反应啊,跟来了大姨妈心情烦躁似的。 [/quote] 看你反应也不小啊,是不是比我来的还多啊。你吐槽都吐不到点儿上,还不许我说话啊。[/quote] 量多,但是我不发脾气啊, 发吧发吧,憋坏了不好。[/quote] 也许我措辞强硬了吧,不过我没发脾气,也没准备发,我觉得我只是指出了你观点中一个显而易见的逻辑问题,即变量名是否简单达意与选择什么做分隔符没有必然联系,更多的是人为的因素。
ZHOU西口 2013-05-27
  • 打赏
  • 举报
回复
一种书写习惯,自己看着舒服就可以了
derekrose 2013-05-27
  • 打赏
  • 举报
回复
我感觉还好,可读性差不多
加载更多回复(20)

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧