程序员们为了自己的代码能更容易的在同行之间交流,所以才取统一的可读性比较好的命名方式。
常用的命名规范有驼峰命名法(Camel-Case)和匈牙利命名法。
驼峰命名法就是当变量名或函数名是由一个或多个单字连结在一起,而构成的唯一识别字时,第一个单字以小写字母开始,第二个单字的首字母大写;例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。
匈牙利命名法是一种编程时的命名规范。
基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。
属性部分通常是小写的前缀,比如bEnable, nLength, hWnd。
再比如创建课程表单,可命名为frmCreateClass。
在C++程序,定义一个指针,可以以p开头,pDataBuffer。
细心的同学,可以发现,如果匈牙利命名法的属性部门也理解成一个单词,其实和上面的驼峰命名发是一致的。即驼峰命名法在某种意义上包含了匈牙利命名法。
经过多年的体会,除了变量的其他代码也尽可能采用驼峰命名法的思想,这样会大大提高编码效率。
这里要提一下函数命名的情况。微软编程的思想里,库函数通常是首字母大写,比如MessageBox这个API函数,但是自己定义的函数并不是一定要这样,你小写也可以。所以,这里就可以统一起来,凡是自定义函数命名的地方也采用驼峰命名。比如:
public String sendMessage(HttpServletRequest request) { ... }
驼峰命名法的第一个单词小写,便于快速编写代码(不用切换到大写状态),而后面的单词大写则是为了直观的查阅变量的意义。
iStudentCount表示学生总数,如果写成istudentcount则非常难懂。当然JAVA程序由于变量类型之间转换已经非常方便,可能会省略前面表示整形的i前缀,而写成studentCount,这也无妨,因为它本质上还是驼峰思想。
不过,很多JAVA程序员不喜欢给类的成员变量加前缀m。其实加上m可以和局部变量区分开来,是很有好处的。
public class UmengController { private final static Logger mRunLogger = LoggerFactory.getLogger("FILE"); public String sendMessage(HttpServletRequest request) { mRunLogger.trace("sendMessage start!"); String con = null; ... } }
从这里例子可以看出,如果一个变量只有一个单词,则全部小写。如con变量。这实质上也不违背驼峰命令法,可以看做是驼峰命名法的简洁化,即这头骆驼只有”头”没有”峰”了。
在javascript编程中,全局变量也最好和c语言编程一样,带上g前缀,比如gMaxRecordNums。
补充两点其他特殊情况:
(1)、常量的定义,无论哪种命名法都提倡大写,且单词间用下划线隔开。比如:
STUDENT_MAX_NUMS
(2)、类名的定义,首字母也大写。几乎主流语言都这样,所以以后定义类名,千万不要首字母小写的。即使你是php或者python工程师。
不要把这两种情况认为是对驼峰命名的思想冲突,更应该理解为是它是驼峰命令的补充,就像世界需要求同存异一样。更何况,它们让你在代码中更加容易区分类名和常量,有什么不好呢?
评论