在为类(class )命名前首先要知道它是什么。如果通过类名的提供的线索,还是想不起这个类是什么的话,那么就说明设计存在问题。 超过三个词组成的混合名是容易造成系统各个实体间的混淆,尝试使用(CRC Se- ssion card)看看该命名所对应的实体是否有着那么多的功用。 对于派生类的命名应该避免带其父类名的诱惑,一个类的名字只与它自身有关,和它的父类叫什么无关。 使用大写字母作为词的分隔,其他的字母均使用小写,名字的首字母使用大写 。不要使用下划线(‘_‘) 。 例如:class NameOneTwo class Name
类库的命名
目前命名空间正在越来越广泛的被采用,以避免不同厂商和团体类库间的类名冲突。当尚未采用命名空间的时候,为了避免类名冲突,一般的做法是在类名前加上独特的前缀,两个字符就可以了,当然多用一些会更好。 例如: John Johnson的数据结构类库可以用Jj做为前缀,如下: class JjLinkList { }
方法的命名
采用与类命名一致的规则,同样是使用英文单词诠释出方法的作用。 例如:class NameOneTwo { function DoIt() {}; function HandleError() {}; }
类属性的命名
属性命名应该以字符‘m’为前缀。前缀‘m’后采用于类命名一致的规则。‘m’总是在名字的开头起修饰作用,就像以‘r’开头表示引用一样。 前缀‘m‘防止类属性和方法名发生任何冲突。你的方法名和属性名经常会很类似,特别是存取元素。 例如:class NameOneTwo { function VarAbc() {}; function ErrorNumber() {}; var mVarAbc; var mErrorNumber; var mrName; }
方法中参数的命名
第一个字符使用小写字母。在首字符后的所有字都按照类命名规则首字符大写。 这样做可以随时知道哪个变量对应哪个变量。另外,这样做可以使用与类名相似的名称而不至于产生重名冲突。 例如:class NameOneTwo { function StartYourEngines( &$rSomeEngine, &$rAnotherEngine); }