• 《编写可读代码的艺术》---不会误解的名字


    前面一篇我们讲了把信息塞到到名字中,现在本章关注命名另外一个陷阱:歧义

    在命名的时候,扪心自问,这样的命名会引起歧义吗?

     1:避免容易引起歧义的单词

    People.Filter("year<='2011'");

    告诉我,你看到这个方法的时候,猜测的结果是筛选掉2011之前的数据,还是筛选出2011之前的数据?

    2:使用min和max表示(包含)极限

    比如下面的代码用来检测购物车的容量不能超过10个

    int Const CART_CAPCITY_LIMIT=10;
    
    if(CartItemlList.Count()>=CART_CAPCITY_LIMIT)
      Debug.Log("cart full")

    你能一阵见血的看出代码问题出在哪了吗?
    购物车商品在10个的时候,程序竟然提示已满!

    int Const CART_MAX_ITEM=10;
    
    if(CartItemlList.Count()>CART_MAX_ITEM)
      Debug.Log("cart full")

    经过我们的改动,上面程序表达的意思是,购物车商品超过限制,就提示。不易产生歧义

    一旦开发组里面形成了这种命名规范,排查类似隐藏的错误将会变得容易

    3:使用fisrt和last来表示(包含)范围

     比如我们要统计年收入

     void SumDurationIncome(int startYear,int stopYear)

    SumDurationIncome(2011,2013) 的统计涵盖2013年吗?可能你就要切回源码去看了。

    那么这样呢?

    void SumDurationIncome(int firstYear,int lastYear)

    我们就能很明白了,从2011年到2013年,都纳入统计范围。

    4:使用exclusive来描述(不包含)范围

    英语里面,很难找到明确描述不包含的单词,所以,为了不发生歧义,我们使用exclusive来描述不包含的范围,比如

    void SumDurationIncome(int firstYear,int exclusiveLastYear)

    就很明确的表示,统计我的收入阶段,从制定年份开始,到截止年份之前

     5:让布尔值“名副其实”

    比如下面的命名

    bool readPassword = true;

    我们猜测这个变量时干啥用的?

    1. 我们需要读密码(isNeedReadPassword)
    2. 我们已经读了密码(isPasswordBeenReaded)

    为了能描述这个布尔值的创建意图,我们可能需要加上 is(是否)、can(能否)、has(拥有)、should(应该)等前缀,来明确语义

    另外,避免使用反义名词

    bool isDisableEncrypt = false;


    上面的代码就是允许用户加密啊,为毛还得转个弯呢。。,下面是它的原意。。

    bool isEnableEnctypt = true;

    6:符合使用者的预期

    在我们印象里面,属性大概是这样的

    public int Salary
    {
    get;
    set;
    }


    如果属性的实际情况是这样

    Public int Salary
    {
    get{循环1000次,从中取出平均值,返回};
    set;
    }

    在不知情的情况下,我们频繁调用这个Salary可能就掉坑里面去了。。
    所以这时我们取名就要暗示:这个方法会很耗费性能,你使用的时候,最好弄个变量存储起来,不要频繁调用。

    //计算薪水
    int ComputeAVGSalary();
  • 相关阅读:
    Linux学习——在虚拟机上的Linux进行磁盘分区
    Linux命令学习3——用户管理
    linux 命令学习2
    linux 命令学习1——tr命令
    基于netty的一个简单的时间服务器的实现(netty学习)
    JavaNIO
    JavaNIO中的内存映射io
    打造高效的工作环境 – SHELL 篇
    linux下怎么清理缓存
    清理系统缓存
  • 原文地址:https://www.cnblogs.com/kimmy/p/3669676.html
Copyright © 2020-2023  润新知