我们的代码中充满了各种各样的命名,变量名称、函数名称、类名称、资源目录、源文件名称等,名称对代码的可读性影响至关重要,毕竟阅读代码的时间远远多于书写代码的时间,因此我们必须慎重对待它!

有时候命名是一件很困难的事情,可能一时想不到好的命名,如果之后发现更好的命名的话,需要替代掉这个原先不好的命名。

以下有几条简单命名规则,给大家参考:

起一个名副其实的名称

变量、函数、类的命名本身应该让人看到这个名称就知道其功能作用,必须自我解释。如果一个名称需要注释来解释的话,那么它就不算是一个好的名称。一个好的名称可以让代码更加的清晰明了。

名称要避免误导别人

例如:别用$nameArray作为变量名称,除非这个变量就是一个数组的类型,不然很容易误导别人。

名称要做有意义的区分

例如getAccount()方法和getAccountInfo()方法,这两个方法的名名称虽然不同,但是意思却差不多,很容易让人混淆,不好区分,使用的时候就就不知道调用哪个方法。

使用读的出来的名称

我们开发过程中经常需要讨论,如果一个变量的名称念不出来,那么讨论的时候就像个傻鸟,这个变量那个变量的说,很难受。

名称需要好搜索

我们开发过程中,经常需要搜索一些名称,看看哪里有使用到,如果我们的函数名a(),那么搜索a的时候,我们会发现到处都是,结果不是我们想要的。

少自己编一套编码作为名称

这种自己赋予的特殊意义,无疑要增加新人的学习负担,前缀m_代表成员属性,_下划线开头代表私有属性,而且时间一久,人就会忽略这些。

类和对象名称应该是名词或者名词短语

例如Customer、Account,而不能使用Process动词。

方法名称应该是动词或者动词短语

例如deletePage,save等,属性访问器、修改器、断言应该根据其值命名,并且前面加上geg、set、is前缀,例如name属性:getName、setName、isName。

别扮可爱

取名是一件严肃的事情,不要自己觉得好玩,随便取一个搞笑的名称,还以为人家容易记住。

每一个概念对应一个词

系统里的每个概念都要抽象一个词,并且整个系统里用到这个概念的名称都要保持一致。

别用双关语

我们应该坚持在系统里,一个名称就是一个意思,不要在不同的地方有不一样的意思。我们的原则是要写出尽量令人容易理解的名称。

使用问题领域的名称

如果不能用程序员熟悉的术语来给手头的工作命名,就采用从所涉问题领域而来的名称吧。至少,负责维护代码的程序员就能去请教领域专家了。

优秀的程序员和设计师,其工作之一就是分离解决方案领域和问题领域的概念。与所涉问题领域更为贴近的代码,应当采用源自问题领域的名称。

使用解决方案领域名称

记住,只有程序员才会读你的代码。所以,尽管用那些计算机科学(Computer Science,CS)术语、算法名、模式名、数学术语吧。依据问题所涉领域来命名可不算是聪明的做法,因为不该让协作者老是跑去问客户每个名称的含义,其实他们早该通过另一名称了解这个概念了。

对于熟悉访问者(VISITOR)模式的程序来说,名称AccountVisitor富有意义。哪个程序员会不知道JobQueue的意思呢?程序员要做太多技术性工作。给这些事取个技术性的名称,通常是最靠谱的做法。

添加有意义的语境

例如可以适当地添加前缀,例如:addrFirstName、addrLastName等,提供语境,代表这个是地址的一部分。以Controller结尾的代表控制器,以Model结尾的代表是模型类,有时候比较好管理。

当然如果语境没有意义的话,最好不要加,这样会很冗余。