电子产业一站式赋能平台

PCB联盟网

搜索
查看: 385|回复: 0
收起左侧

编程基础,软件代码通常有哪几种命名规则?

[复制链接]

577

主题

577

帖子

4497

积分

四级会员

Rank: 4

积分
4497
发表于 2024-3-9 17:52:00 | 显示全部楼层 |阅读模式
我是老温,一名热爱学习的嵌入式工程师
关注我,一起变得更加优秀!
良好的编程习惯,决定了今后代码的质量。

很多工程师不注重平时编码习惯,比如命名规则,一会大写、一会小写,一会中文拼音,一会下划线等,导致自己写的代码自己都看不懂了。

今天就来分享一点关于软件代码常见的几种命名规则。

匈牙利命名法
匈牙利命名法广泛应用于微软 Windows 这类环境中,这种命名技术是由微软早期的一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。
匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域、类型等。
这些符号可以多个同时使用,顺序是先m_(成 员变 量),再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀,前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途例如:bEnable, nLength, hWnd。

s044r0gcrxw64010561913.png

s044r0gcrxw64010561913.png


下面分享关于匈牙利命名法中常用的小写字母的前缀。

属性部分:
  • g_ 全局变量
  • c_  常量
  • m_  c++类成员变量
  • s_  静态变量

    类型部分:
  • 数组 a
  • 指针 p
  • 函数 fn
  • 无效 v
  • 句柄 h
  • 长整型 l
  • 布尔 b
  • 浮点型(有时也指文件) f
  • 双字  dw
  • 字符串  sz
  • 短整型  n
  • 双精度浮点 d
  • 计数 c(通常用cnt)
  • 字符 ch(通常用c)
  • 整型 i(通常用n)
  • 字节 by
  • 字 w
  • 实型 r
  • 无符号 u

    描述部分:
  • 最大 Max
  • 最小 Min
  • 初始化 Init
  • 临时变量 T(或Temp)
  • 源对象 Src
  • 目的对象 Dest

    驼峰命名法
    驼峰命名法近年来越来越流行,驼峰命名法,正如它的名称所表示的那样,指的是混合使用大小写字母来构成标识符的名字。其中第一个单词首字母小写,余下的单词首字母大写。
    例如:
    printEmployeePaychecks();
    函数名中每一个逻辑断点都有一个大写字母来标记。

    帕斯卡命名法
    帕斯卡命名法与驼峰命名法类似,只不过驼峰命名法是第一个单词首字母小写,而帕斯卡命名法则是第一个单词首字母大写。因此这种命名法也有人称之为“大驼峰命名法”。
    例如:
    DisplayInfo();
    UserName

    都是采用了帕斯卡命名法。
    事实上,很多程序设计者在实际命名时会将驼峰命名法和帕斯卡结合使用,例如变量名采用驼峰命名法,而函数采用帕斯卡命名法。
    下划线命名法
    下划线法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。

    1.函数的命名
    函数名使用下划线分割小写字母的方式命名:
    设备名_操作名();
    操作名一般采用:谓语(此时设备名作为宾语或者标明操作所属的模块)或者谓语 宾语/表语(此时设备名作为主语或者标明操作所属的模块) 等形式,如:
    tic_init();
    adc_is_busy();
    uart_tx_char();

    中断函数的命名直接使用 设备名_isr() 的形式命名,如:
    timer2_isr();
    2.变量的命名
    变量的命名也采用下划线分割小写字母的方式命名。命名应当准确,不引起歧义,且长度适中。如:
    int length;
    uint32 test_offset;

    单字符的名字也是常用的,如i, j, k等,它们通常可用作函数内的局部变量。tmp常用做临时变量名。
    局部静态变量,应加s_词冠(表示static),如:
    static int s_lastw;
    全局变量(尤其是供外部访问的全局变量),应加g_词冠(表示global),如:
    void (* g_capture_hook)(void);
    3.常量及宏的命名
    采用下划线分割大写字母的方式命名,一般应以设备名作为前缀,
    防止模块间命名的重复。如:
    #define TIMER0_MODE_RELOAD 2
    #define TIMER2_COUNT_RETRIEVE(val) ((uint16)(65536 - (val)))

    当然,看作接口的宏可以按照函数的命名方法命名,例如:
    #define timer2_clear() (TF2 = 0)
    #define timer0_is_expired() (TF0)

    据考察,没有一种命名规则可以让所有的程序员赞同,程序设计教科书一般都不指定命名规则。
    命名规则对软件产品而言并不是“成败悠关”的事,我们不要化太多精力试图发明世界上最好的命名规则,而应当制定一种令大多数项目成员满意的命名规则,并在项目中贯彻实施
    编排 | strongerHuang声明:本文素材来源网络,如涉及作品版权问题,请与我联系删除。
    -END-
    往期推荐:点击图片即可跳转阅读
                                                           
                                                                   
                                                                           
                                                                                   

    krqesrm5iil64010562013.jpg

    krqesrm5iil64010562013.jpg

                                                                                   
                                                                                            Sora问世,你焦虑不?对技术工程师来说,有什么影响?
                                                           
                                                                   
                                                                           
                                                                                   

    cp4dt22tbxx64010562113.jpg

    cp4dt22tbxx64010562113.jpg

                                                                                   
                                                                                            别人劝你不要学单片机,你就不学了?
                                                                   
                                                                           
                                                                                   

    1peekjyqa3l64010562213.jpg

    1peekjyqa3l64010562213.jpg

                                                                                   
                                                                                            关于函数指针的 6 个高级应用场景
                                                                                   
                                                                           
                                                                   
                                                            我是老温,一名热爱学习的嵌入式工程师
    关注我,一起变得更加优秀!????????????
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条


    联系客服 关注微信 下载APP 返回顶部 返回列表