美文网首页全栈工程师
第二章 有意义的命名

第二章 有意义的命名

作者: Dl_毛良伟 | 来源:发表于2017-08-08 12:09 被阅读18次

    避免误导


    例如:

    • 不要用accountList来指定一组账号,除非它真的是List类型,可以使用accounts或者accountGroup
    • 提防使用不同之处较小的名称。
    如XYZControllerForEfficientHandlingOfStrings和XYZControllerForEfficientStorageOfStrings。
    

    有意义的区分

    例如:

    • 使用Product ProductInfo ProductData来表示3个不同类的话是很难区分的,因为Info和Data意义上并没有太大的区别,容易混淆,类似的还有moneyCount和money
      nameString真的比name更加清晰吗?
    • 废话是另一种没意义的区分。Prodeuct,ProductInfo或ProductData,名称不同,意思无区别。 废话都是冗余,Variable一词永远不应出现在变量名中,Table一词永远不应出来在表名中。
      再如:
    getActiveAccount();
    getActiveAccounts();
    getActiveAccountInfo();
    moneyAmount与money
    customerInfo与customer
    accountData与account
    theMessage与message
    

    名副其实

    说起来很简单。选个好名字需要花时间,但省下的时间比花掉的多。注意命名,一旦有好的命名,就换掉旧的。

     int d;// 消失的时间,以日计。
     int elapsedTimeInDays;
    

    使用便于搜索的的名称

    单个字母或者数字常量是很难在一大堆文章中找出来。比如字母e,它是英文中最常用的字母。长名胜于短名称,搜得到的名称胜于自编的名称。 窃以为单字母的名称仅用于短方法中的本地变量。名称长短应与其作用域大小相对应。

    for (int j = 0; j < 34; j++){
        s += (t[j]*4)/5;
    }
    

    int readDaysPerIdealDay = 4;
    final int WORK_DAYS_PER_WEEK = 5;
    int sum = 0;
    for (int j = 0; j < NUMBER_OF_TASKS; j++){
        int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
        int realTaskWeeks = realTaskDays / WORK_DAYS_PER_WEEK;
        sum += realTaskWeeks;
    }
    

    类名应该是名词或短语

    像Customer,Account,避免使用Manager,Processor,Data或者Info这样的类名。类名不应当是动词。


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

    如postPayment ,deletePage或Save,属性访问、修改和断言应该根据其值来命名,并加上get,set,is这些前缀。

    相关文章

      网友评论

      本文标题:第二章 有意义的命名

      本文链接:https://www.haomeiwen.com/subject/nzuolxtx.html