[转]三种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法

[转]三种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法三种流行的命名法则目前 业界共有四种命名法则 驼峰命名法 匈牙利命名法 帕斯卡命名法和下划线命名法 其中前三种是较为流行的命名法 驼峰命令法 Camel nbsp 也称骆驼式命名法正如它的名称所表示的那样 是指混合使用大小写字母来构成变量和函数的名字例如 下面是分别用骆驼式命名法和下划线法命名的同一个函数 程序代码 printEmploye print em

三种流行的命名法则

目前,业界共有四种命名法则:驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法,其中前三种是较为流行的命名法。

驼峰命令法(Camel): 

也称骆驼式命名法正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字例如,下面是分别用骆驼式命名法和下划线法命名的同一个函数:

程序代码

printEmployeePaychecks(); print_employee_paychecks();

第一个函数名使用了骆驼式命名法,函数名中的每一个逻辑断点都有一个大写字母来标记;第二个函数名使用了下划线法,函数名中的每一个逻辑断点都有一个下划线来标记 

骆驼式命名法近年来越来越流行了,在许多新的函数库和Microsoft Windows这样的环境中,它使用得当相多另一方面,下划线法是c出现后开始流行起来的,在许多旧的程序和UNIX这样的环境中,它的使用非常普遍 

驼峰式命名法分为大驼峰式命名规则:FirstName, CamelCase

小驼峰式命名规则:firstName, camelCase

[中间不需要空格 – _等分割符]

匈牙利命名法(Hungarian): 

广泛应用于象Microsoft Windows这样的环境中Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯- 西蒙尼(Charles Simonyi) 提出的

匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等这些符号可以多个同时使用,顺序是先m_(成员变量), 再指针,再简单数据类型,再其它 

例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量 

匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途 

匈牙利命名法的规则是:

复制代码

属性+类型+描述 属性一般是小写字母+_: g_:全局变量 m_:类成员变量 s_:静态变量 c_:常量 类型就多了: b:bool sz:以零结束的字符串 p:指针 n:整整 dw:双字 l:长整型 无符号:u 函数:fn

复制代码

匈牙利命名法分为系统和应用两种。系统着眼于类型。应用着眼于语义,比如col表示行,c表示计数。

帕斯卡(Pascal)命名法: 

与骆驼命名法类似只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写,如:

程序代码

DisplayInfo(); string UserName;

pascal命名规则:大驼峰式命名规则

三种命名规则的小结:

MyData 就是一个帕斯卡命名的示例 而myData是一个骆驼命名法,它第一个单词的第一个字母小写,后面的单词首字母大写,看起来像一个骆驼 而iMyData是一个匈牙利命名法,它的小写的i说明了它的型态,后面的和帕斯卡命名相同,指示了该变量的用途.

以上个人理解。总的来说,命名的最终目的是增加易读性,可读性。

(1)标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解——尽量采用采用英文单词或全部中文全拼表示,若出现英文单词和中文混合定义时,使用连字符“_”将英文与中文割开。较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。例如:temp->tmp、flag->标志寄存器、statistic->stat、increment->inc、message->msg等缩写能够被大家基本认可。
(2)命名中若使用特殊约定或缩写,则要有注释说明。应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。
(3)自己特有的命名风格,要自始至终保持一致,不可来回变化。个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。(即命名规则中没有规定到的地方才可有个人命名风格)。
(4)对于变量命名,禁止取单个字符(如i 、j 、k… ),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i 、j 、k 作局部循环变量是允许的。变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。
(5)除非必要,不要用数字或较奇怪的字符来定义标识符。
(6)命名规范必须与所使用的系统风格保持一致,并在同一项目中统一。
(7)在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。对接口部分的标识符应该有更严格限制,防止冲突。如可规定接口部分的变量与常量之前加上“模块”标识等。
(8)用正确的反义词组命名具有互斥意义的变量或相作的函数等。

下面是一些在软件中常用的反义词组。


















复制代码

add / remove begin / end create / destroy insert / delete first / last g et / release increment / decrement put / get add / delete lock / unlock open / close min / max old / new start / stop next / previous source / target show / hide send / receive source / destination cut / paste up / down 示例: intmin_sum; intmax_sum; intadd_user( BYTE *user_name ); intdelete_user( BYTE *user_name );

复制代码

(9)除了编译开关/ 头文件等特殊应用,应避免使用_EXAMPLE_TEST_ 之类以下划线开始和结尾的定义。

复制代码

bool 用b开头 b标志寄存器 int 用i开头 iCount short int 用n开头 nStepCount long int 用l开头 lSum char用c开头 cCount unsigned char 用by开头 float 用f开头 fAvg double 用d开头 dDeta unsigned int(WORD) 用w开头 wCount unsigned long int(DWORD) 用dw开头 dwBroad 字符串 用s开头 sFileName 用0结尾的字符串 用sz开头 szFileName

复制代码

(2)指针变量命名的基本原则为:

复制代码

enum cmEMDAYS { EMDAYS_MONDAY; EMDAYS_TUESDAY; …… };

复制代码

(6)对struct、union变量的命名要求定义的类型用大写。并要加上前缀,其内部变量的命名规则与变量命名规则一致。
结构一般用S开头,如:

struct ScmNPoint { int nX;//点的X位置 int nY; //点的Y位置 };

联合体一般用U开头,如:

union UcmLPoint { LONG lX; LONG lY; }

(7)对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其意思。当需要由多个单词表示时,单词与单词之间必须采用连字符“_”连接。

如:#define CM_FILE_NOT_FOUND CMMAKEHR(0X20B) 其中CM表示类别。

(8)对const 的变量要求在变量的命名规则前加入c_。即:c_+变量命名规则;示例:const char* c_szFileName;

 

函数的命名规范

(1)函数的命名应该尽量用英文(或英文缩写、中文全拼、中文全拼缩写)表达出函数完成的功能——函数名应准确描述函数的功能。遵循动宾结构的命名法则,函数名中动词在前,并在命名前加入函数的前缀,函数名的长度不得少于8个字母。函数名首字大写,若包含有两个单词的每个单词首字母大写。如果是OOP 方法,可以只有动词(名词是对象本身)。示例:

LONG GetDeviceCount(……); void print_record( unsigned int rec_ind ) ; intinput_record( void ) ; unsigned char get_current_color( void ) ;

(2)避免使用无意义或含义不清的动词为函数命名。如使用process、handle等为函数命名,因为这些动词并没有说明要具体做什么。

如:……cmCopyString(const CHAR * c_szSource, CHAR * szDest)

文件名(包括动态库、组件、控件、工程文件等)的命名规范文件名的命名要求表达出文件的内容,要求文件名的长度不得少于5个字母,严禁使用象file1,myfile之类的文件名。

修改自参考链接

http://xp9802.iteye.com/blog/

http://www.niubb.net/a/2015/04-23/281576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217200.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:07
下一篇 2026年3月18日 上午10:07


相关推荐

  • Kimi估值不到3个月翻4倍涨至180亿美元

    Kimi估值不到3个月翻4倍涨至180亿美元

    2026年3月15日
    1
  • devtools工具如何使用_devtool制作插件

    devtools工具如何使用_devtool制作插件7devtool快速参考目录7devtool快速参考7.1获得帮助7.2工作区层结构7.3向工作区层添加新配方7.4提取现有配方的来源7.5同步一个配方的提取源树7.6修改现有配方7.7编辑现有配方7.8更新配方7.9查看配方升级状态7.10升级配方7.11重置配方7.12建立你的配方7.13建立你的形象7.14在目标机器上部署你的软件7.15从目标机器上删除您的软件7.16在替代位置创建工作空间层7.17获取工作区中配方的状态

    2022年10月5日
    4
  • java与数据库连接的步骤_java与数据库的连接怎么实现

    java与数据库连接的步骤_java与数据库的连接怎么实现1.加载驱动Class.forname(数据库驱动名);2.建立数据库连接使用DriverManager类的getConnection()静态方法来获取数据库连接对象,其语法格式如下所示:Connectionconn=DriverManager.getConnection(Stringurl,Stringuser,Stringpass);其中url–数据库连接字符串….

    2025年12月8日
    5
  • java杀死进程_linux杀死所有进程

    java杀死进程_linux杀死所有进程使用jps命令jps的作用是显示当前系统的java进程情况及进程id。使用命令taskkill/f/pid”1952″后此时就杀死了当前的指定的进程

    2026年2月6日
    2
  • DWARF, 说不定你也需要它哦

    DWARF, 说不定你也需要它哦https www jianshu com p 20dfe4fe1b3f 是一种调试信息格式 通常用于源码级别调试相关资料比较琐碎 整理给大家 希望大家可以用得上如没有特殊说明 命令执行环境为 OSX 什么是 DWARF DWARF 第一版发布于 1992 年 主要是为 UNIX 下的调试器提供必要的调试信息 例如 PC 地址对应的文件名及行号等信息 以方

    2026年3月18日
    2
  • c# openfiledialog如何使用_其在古文中的用法

    c# openfiledialog如何使用_其在古文中的用法1.OpenFileDialogprivatevoidbtnOpen_Click(objectsender,EventArgse){OpenFileDialogofd=newOpenFileDialog();ofd.InitialDirectory=@"C:\Users\LWP1398\Desktop…

    2022年10月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号