注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

俊峰 电子 电脑

伸手摘星,未必如愿,但至少不会弄脏你的手

 
 
 

日志

 
 
关于我

荆门市东宝中学 熊军锋 任教学科:网络管理 擅长的技术:专业开发8位 16位 32位单片机,电脑人机界面一体化控制,工业控制,数控产品及嵌入式系统开发等。 曾经做过的项目:数码发电机,摩托车综合仪表,变频器,打包机控制

网易考拉推荐

C/C++中变量及函数命名的讨论  

2010-07-06 22:12:57|  分类: VS编程技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、命名法
    在编程时为提高程序的可读性及易维护性,降低程序的维护、升级成本,在程序代码的书写时除了要注意格式外还要注意变量的命名,现在流行的有两种命名法,一种是流行于Window编程(主要是由于微软的影响)的匈牙利命名法。
    据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,后来他在微软呆了几年,于是这种命名法就通过微软的各种产品和文档资料向世界传播开了。现在,大部分程序员不管自己使用 什么软件进行开发,或多或少都使用了这种命名法。这种命名法的出发点是把量名变按:属性+类型+对象 描述的顺序组合起来,以使程序员作变量时对变量的类型和其它属性有直观的了解,下面是HN变量命名规范,其中也有一些是我个人的偏向:
属性部分
全局变量 g_
常量 c_
c++类成员变量 m_
静态变量 s_
类型部分
指针 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, Tmp)
源对象 Src
目的对象Dest (或Dst
这里顺便写几个例子:
hwnd : h 是类型描述,表示句柄, wnd 是变量对象描述,表示窗口,所以 hwnd 表示窗口句柄;
pfnEatApple : pfn 是类型描述,表示指向函数的指针, EatApple 是变量对象描述,所以它表示
指向 EatApple 函数的函数指针变量。
g_cch : g_ 是属性描述,表示全局变量,c 和 ch 分别是计数类型和字符类型,一起表示变量类
型,这里忽略了对象描述,所以它表示一个对字符进行计数的全局变量。
上面就是HN命名法的一般规则。
    另外一种命名法流行于Linux/Unix系统的编程者中间,不是用大小写区分各个词,而是通过下划线"_"来分割,如print_char(),send_a_byte。这种方法有好处就是不用区分大小写,因为全部用小写,但是由于每一个词之间都有一个下划线,就增长了变量、函数名的长度。

    这两种命名法可以根据个人爱好选择。
二、作用域与变量命名
    在使用变量时为了方便可以给变量名加上前缀,如上述匈牙利命名法中的i,c,l等用于区分变量是int,char,long型,但如果一个函数中用到了全局变量还用到了局部变量,当然可以通过加前缀来实现,如g_表示全局,l_表示局部变量 m_表示类成员,但也可以采用不同的命名法来实现。如全局变量用匈牙利命名法,局部变量则采用加下划线的方式,这样一看到变量也能马上区分出是全局变量还是局部变量。


三、命名的几点建议
 变量或函数名采用有意义的英文单词、词组或者缩写表示,并且整个函数名的首字母大写,而变量名首字母小写。如PutChar(), iTimeCounter, tmpCounter, SaveSettings(), ChkBuff()等。
 全局变量加前缀指示数据类型,并加前缀g,整个函数内均有效的局部变量加l,且带数据类型,如果一个局部变量仅用于很小的范围内,如仅用于一个for循环中,可以不加任何前缀,并且用简短的变量名,如:
glSysClk, gipCounter(int型指针做全局变量)
...
{ int i;
  for(i=0; i<5; i++){
   ...
  }
}
...
for(int i=0; i<5; i++){
 ...
}
 变量及函数分组命名,加前缀。全局函数加组名,静函数可以不加组名。如一组堆栈管理函数StkPush(),StkPop(), StkClr(), StkGetLength()

  评论这张
 
阅读(1043)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017