编写可读代码(一) 命名方法和命名规范

本文介绍了编程中常见的四种命名法则:匈牙利命名法、下划线命名法、帕斯卡命名法和骆驼命名法。详细阐述了每种方法的优缺点,并探讨了命名规范在多人合作项目和个人项目中的重要性。指出好的命名是提高代码可读性的关键,而遵循命名规范是起好名字的第一步。
摘要由CSDN通过智能技术生成

计算机编程中主要有四种命名法则匈牙利命名法、下划线命名法、帕斯卡命名法和骆驼命名法。

一、匈牙利命名法

据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,后来他在微软呆了几年,于是这种命名法就通过微软的各种产品和文档资料向世界传播开了。大部分程序员不管自己使用什么软件进行开发,或多或少都使用了这种命名法。这种命名法的出发点是把变量名按:属性+类型+对象描述的顺序组合起来,以使程序员作变量时对变量的类型和其它属性有直观的了解。(引自百度百科,匈牙利命名法词条)

匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。 匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。

由于微软的windows系统大量采用了匈牙利命名法,并且在以前的visual studio中建议使用匈牙利命名法,因此这种命名法有着不小的市场,但也有着大量批评的声音。到了.net,微软也不再建议使用匈牙利命名法,而采用骆驼命名法和帕斯卡命名法。在我看来,主要有以下几个原因,导致这种命名法难以使用。

1,类型太多,需要记忆的小写字母前缀很多,而且一旦进行组合之后会更让初学者不明所以。如很多博文中都会举出的例子m_lpszStr,其中m_表示成员,l表示长类型,p表示指针,sz表示以‘\0’结尾的字符串,因此这个标识表示指向一个以0字符结尾的字符串的长指针成员变量。但是我们自己使用的时候,无论是起名字还是去读,我觉得都很容易搞错吧。。

2,对于结构体、联合体这样的类型应该用什么样的小写字母?我简单查了下,貌似没有确定的标准,这就给不同的程序员之间的沟通带来了问题。

3,对于C++中大量引入的新特性,匈牙利命名法无法支持。如命名空间、模板类、类型修饰(如const、static等),都难以用匈牙利命名法去找到确定的描述方式。

举个例子,std::map<int,string> ,我觉得这样的类型很难用匈牙利命名法来表示了。

4,很多时候,匈牙利命名法中提供的类型信息是冗余的、无用的。在这个时候,命名法造成的信息冗余反而会分散人的注意力,对代码的阅读产生了负面的作用。

对于这种情况,我的看法是,用一个好的名字,比在名字中加入类型信息会有更好的效果。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值