clean code 原文中classnames部分的描述是这样的:
Classes and objects should have noun or noun phrase names likeCustomer,WikiPage,Account, andAddressParser. Avoid words likeManager,Processor,Data, orInfo in the nameof a class. A class name should not be a verb.
总结一下其实就只有几点
第一点:应该避免Manager,Processor,data or info.
为什么不能用Manager,Processor,data,info呢?我个人认为这些名词都太通用,或者无法给代码的阅读者太多有效的信息。例如CalendarUserData,其实和没说一样,而且也不知道data到底是些什么,个人愚见,这里如果赋予CalendarUserNote或者什么CalendarUserToDoList能够更清晰的体现出来这些到底是什么。Manager,Processor,Handler,Info什么的也是一样。仔细回想起来,自己还真用了不少Handler,Manager什么的,看来之后要尽量减少使用,不到逼不得已没有更好的结果了就不要这样去用。
第二点:尽量不要用动词或者包含动词。
思考一下,为什么要这样呢?比如说魔兽世界这个游戏吧,如果里边有一个类叫做selectEnemy什么的,那么显然这个类的内容很难去写,这看起来更像一个方法。或者CutFinger等等这些类都不合适,因为类是用来产生对象,要不然是主体,要不然是客体,而包含动词的语句一般都是主客体都有的语句,所以类名中包含动词也就是说要包含主体客体,一个类去代表主体客体显然不合适。(姑且这么认为吧)
仅仅明白了是不够的,现在来取几个名字试试。自己给自己出道题好了,就来设计一个简单的电梯控制系统。
需要用到的类应该是Lift,Custom,LiftController。Controller和Manager应该属于类似的名词,根据刚刚学到的知识,这里就可以改成LiftControlElectronicSystem
相反的,方法名尽量要用动词,在上边这个例子中,比如Custom可以有一个pressButtonToGoUp等等,可能不是那么合适,但是总体来说就是最好包含动词。