【C】程序设计中变量名和函数名命名的规则。万分感谢!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【C】程序设计中变量名和函数名命名的规则。万分感谢!!相关的知识,希望对你有一定的参考价值。

我听说过“匈牙利命名法”、“驼峰式大小写 ”。
但是我听说微软建议不要使用“匈牙利命名法”,所以我想问现在有没有更好的变量名、函数名命名的规则?
万分感谢!!!

参考技术A 没有更好的,只有在不同平台下,所选择的相对较好的命名规则 参考技术B 那就采用 驼峰式大小写 这个被 参考技术C 我有一份代码规范书,里面有变量和函数名地命名规则,你要的话留下Q。本回答被提问者采纳 参考技术D 说起匈牙利命名法,必须区分匈牙利应用命名法和匈牙利系统命名法,后者在前者基础上发展而来并盖过前者。
原始的匈牙利命名法,现在被称为匈牙利应用命名法,由1972年至1981年在施乐帕洛阿尔托研究中心工作的程序员查尔斯·西蒙尼发明。西蒙尼建议的大多数前缀都是自然语义的,其前缀是为了说明变量的应用属性或业务属性,例如“String dogName, manName;”;
而匈牙利系统命名法的前缀是为了说明变量的系统属性,比如类型,例如“String strName;”,系统命名法在从某种程度上来说是冗余的。
很多人讨厌匈牙利命名法,认为多此一举,看起来令人厌恶,其实应该归罪于微软,是微软Windows误导和糟蹋了匈牙利命名法。在第一个Windows API包推出时,微软在示例代码和API中大量使用由变量类型作前缀的命名法,由于微软强大的影响力,以至于非常多的软件都以此为标准。虽然西蒙尼在很早时就意识到这个问题,但他也无法阻挡这种趋势,只好和微软这种命名法划定界限,分出匈牙利应用命名法和匈牙利系统命名法。在微软内部,除了Word和Excel开发团队还在使用最原始的匈牙利应用命名法,其他团队和其他公司都在使用微软推出的匈牙利系统命名法。随时不断发展,基本上很少有人知道最初的匈牙利命名法了。后来很多人发现匈牙利系统命名法的缺点,大量攻击其缺陷,推荐大家不要再用匈牙利命名法,连同匈牙利应用命名法也一同受到否定。

广泛使用的命名法还有驼峰式命名法和帕斯卡命名法等。
变量命中的第2个及其以后的单词的首字母均大写,就是驼峰式命名,可以看出匈牙利应用命名法实际上就是一种驼峰式命名法。
帕斯卡(pascal)命名法与骆驼命名法类似,只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写。
此外还有Unix命名规则,在单词间加下划线,如take_it_away。

微软的MSDN明确指出不提倡匈牙利命名法,但也没有提出使用某一替代品的建议,下面是它的原文:
________________
通用命名约定讨论的是如何为库元素选择最适当的名称。这些准则适用于所有标识符。后面各节讨论特定元素(如命名空间或属性)的命名。
选择名称
请选择易读的标识符名称。例如,英文属性名称 HorizontalAlignment 比 AlignmentHorizontal 更具可读性。
可读性比简洁性更重要。属性名称 CanScrollHorizontally 比 ScrollableX(指 X 轴,但意义不明确)更好。
不要使用匈牙利表示法。
匈牙利表示法是在标识符中使用一个前缀对参数的某些元数据进行编码,如标识符的数据类型。
避免使用与常用编程语言的关键字冲突的标识符。
虽然符合 CLS 的语言必须提供将关键字用作普通字的方法,最佳做法不要求强制开发人员了解如何实现。对于大多数编程语言,语言参考文档都会提供语言所使用的关键字列表。
缩写和首字母缩写词
通常,不应使用缩写或首字母缩写词。这类名称的可读性较差。同样,要确定某个首字母缩写词是否已受到广泛认可也是很困难的。
不要将缩写或缩略形式用作标识符名称的组成部分。
例如,使用 OnButtonClick 而不要使用 OnBtnClick。
除非必要,不要使用任何未被广泛接受的首字母缩写词。
语言特定的名称
对于类型名称,应使用语义上有意义的名称而不要使用语言特定的关键字。例如,名称 GetLength 比 GetInt 更好。

总结整理前端‘变量名’‘类名’‘函数名’的命名规则

命名原则【一定要让人家一看就知道你命名的含义】

变量名:命名变量的法则是单词之间用下划线隔开,不要用驼峰命名

图片示例:

技术分享图片

 

 

函数名:驼峰命名函数(id名,函数名)

图片示例:

技术分享图片

 

类名:命名规则是用连接符号-来分隔两个单词

图片示例:

技术分享图片

 

以上是关于【C】程序设计中变量名和函数名命名的规则。万分感谢!!的主要内容,如果未能解决你的问题,请参考以下文章

C++变量(C++变量定义变量赋值命名规则)

C++变量(C++变量定义变量赋值命名规则)

Python 命名空间与LEGB规则

JavaBean的命名规则

C语言命名规范

如何查看DLL中的函数名及参数