分享

命名的艺术(一)

 非非爱读书 2022-04-06

1、名副其实

通常给变量做定义的时候,选个好名字要花费一些时间,但日后省下来的时间会比花掉的时间多很多。而且当我们发现有更好的名称的时候,就换掉旧的。如果你长期坚持值么做,你自己包括读你代码的人都会很更开心,因为他们不需要再去花时间去详细解析你的代码含义了。

变量、函数、或者类名的名称应该就已经回答了很多问题了。这些名称里,它会告诉你,它为什么存在于此,它该做什么事,应该怎么用。

    例如:

        int  d;  // 门票有效天数

在没有注释的情况下,这里的d完全理解不出任何含义,也没有有效天数的感觉。我们应该完善计量单位名称,让其在合理的语境和语义下阐释出完整的含义。例如如下

       int TicketValidDays;

2、避免误导

程序员应该避免留下隐藏代码本意的错误线索。避免使用与本意相悖的词。例如:accountList来指称一组账号,除非这个数据真的是一组list类型的数据。因为list对于程序员来说具有着特殊的意义。会引起代码阅读者的错误判断。所以使用accountGroup或者直接使用account都是更好的选择。

误导性名称真正可怕的例子就是,使用小写字母l和大写字母O作为变量的名字,尤其是在组合使用的时候。因为他们在不进行细致观察的情况下更像常量“壹”和“零”。

        int a = 1;

        if(O == 1)

所以在进行变量起名时,我们宁可多花上一些时间把名字取好,这会使我们日后对程序的维护和交界,节省更多的理解时间。

3、做有意义的区分

在同一作用范围内两样不同的东西不可以重复命名,你可能会随手改掉其中一个的名称。有时干脆就对错误的拼写置之不理,结果在更正了拼写之后出现了编译出错的情况。例如: ProductInfo  和  ProductData ,Info和Data 这类词语就像a、an、the一样是意义含混的废话。但是只要体现出有意义的区分,使用a和the这样的前缀就不会有太大的问题。

废话就是冗余。Variable一词就不应该出现在变量名字中,table也不应该出现在数据库的表名中,另外NameStr 比Name 有更好吗,并没有,只是徒增了废话而已,难道name的类型会是一个int类型?如果是这样的话就是造成了误导了,比如CustomerObject和Customer类他们的区别在哪呢?

在没有特别明确的约定的前提下,变量customerInfo和customer没有任何区别,moneyAccount和money就没有任何区别。AccountInfo和Account就没有任何区别。要对名称进行区分就要以读者能鉴别出来的不同之处进行区分。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多