软件开发常用命名法简介

  前几天与人谈及软件开发标准的时候,话题转到了命名法则上,发现自己虽然知道有几种命名法则,但是每种命名法的具体规则却不甚清楚,有时还会把几种命名法混合在一起。因此感觉有必要把几种常用的命名法总结一下!

  软件命名法主要有匈牙利命名法骆驼命名法帕斯卡命名法。下面对其稍加描述。

  (一)匈牙利命名法

  匈牙利命名法的准则是:变量名=属性+类型+对象描述。用这种命名法命名的变量显示了变量的类型

  匈牙利命名法有两种:系统匈牙利命名法匈牙利应用命名法

  系统匈牙利命名法和匈牙利应用命名法

  系统命名法与应用命名法的区别在于前缀的目的。在系统匈牙利命名法中,前缀代表了变量的实际数据类型。匈牙利应用命名法不表示实际数据类型,而是给出了变量目的的提示,或者说它代表了什么

  例如,对于同一个变量“工场名”,

  系统命名法:strFactoryName(说明该变量是一个string类型)

  应用命名法:orgFactoryName(说明该变量代表了一个组织)

  系统匈牙利命名法的优点

  支持者声称匈牙利命名法的好处包括:

  • 从名字中就可以看出变量的类型
  • 拥有类似语义的多个变量可以在一个代码块中使用:dwWidth, iWidth, fWidth, dWidth
  • 变量名在仅仅知道他们的类型时可以被轻易记住
  • 可以使变量名更加一致
  • 决定一个变量名的时候可以更机械化,更快
  • 不合适的类型转换和操作可以在阅读代码的时候被检测出来
  • 在那些数字被当作字符串处理的基于字符串的语言中非常有用(例如Tcl)
  • 在匈牙利应用命名法中,变量名确保不会犯以下错误:
heightWindow = window.getWidth()
  • 在使用动态类型语言或完全无类型的语言编程时,关于类型的修饰可以更简化。这种语言一般不包含类型修饰(或者可选),因此唯一可以看出哪些类型是被允许的只有名字本身、文档以及通过阅读代码来明白它们在做什么。在这些语言中,包含对于变量类型的指示可能会有助于程序员。就像上面提到的,匈牙利命名法扩展了这样的语言(BCPL)。
  • 在包含许多全局对象的复杂程序中(VB/Delphi Forms),拥有一个基本的前缀命名法可以简化在编辑器中查找组件的工作。按btn<Ctrl-Space>可以使编辑器弹出一个Button对象的列表。

  系统匈牙利命名法的缺点

  批评者认为:

  • 匈牙利命名法在编译器做类型检查时是多余的。 一个提供类型检查的语言在确定一个变量与其类型一致时,比人眼仅仅检查变量的用法与变量名一致要强大的多。
  • 一些现代的集成开发环境,如Visual Studio在需要时可以显示变量类型,并且自动标记不匹配的类型。使用这种命名法完全没有必要。
  • 匈牙利命名法在被用作代表多个属性的时候会造成困惑,如 a_crszkvc30LastNameCol:一个常量引用参数,保存了一个varchar(30)类型的数据库列LastName的内容,而这列又是这个表的主键的一部分。
  • 在代码更改后可能造成不一致。如果一个变量的类型改变了,不是变量名的修饰与新的类型不一致,就是变量名必须被改变。
  • 由于变量名和类型捆绑在一起,因此不利于代码的移植。一个典型的众所周之的例子就是WPARAM类型,以及在许多Windows系统函数声明中使用的wParam参数。它原本是一个16位的类型,但是在后来的操作系统中被改成了32位或64位,但仍保留原来的名字(它实际的基础类型是UINT_PTR,即一个大小足够保存一个指针的无符号整型)。
  • 大多数时候,看到一个变量就意味着知道了它的类型。但是,如果你不知道一个变量是干什么的,知道了它的类型也没什么帮助。

  .NET Framework作为微软新的软件开发平台,除了接口类型一般不适用匈牙利命名法。在.NET中,习惯在接口类型前放一个I(例如Windows Forms中的IButtonControl接口。).NET Framework指导方针建议程序员不要用匈牙利命名法,但是没有指明不要用系统匈牙利命名法还是匈牙利应用命名法,或者是两者都不要用。

  (二)帕斯卡命名法

  帕斯卡命名法是命名的时候将首字母大写。当由多个单词组成的时候,每个单词都是首字母大写。例:

  FactoryName

  (三)骆驼命名法

  骆驼命名法与帕斯卡命名法类似,区别在于,骆驼命名法是第一个单词首字母小写,而帕斯卡命名法每个单词都是首字母大写。例:

  factoryName

  C#中,以帕斯卡和骆驼命名的居多,如:

  static void Main(string[] args)

  using System.Text

posted @ 2010-05-06 20:46  Xiao Tian  阅读(979)  评论(0)    收藏  举报