代码整洁之道--有意义的命名

有意义的命名

从真正意义上的来说,2016.10.29是我真正入职以来,一个团队完成的出海app.当然期间遇到了许多的问题,但是最终还是依依攻破.在最后的时候,组长让我们回去反思下,这是的项目问题,已经推荐了一本书让我们回去看下《代码整洁之道》,因此才有了如下的几篇文章!

  1. 名副其实

    选个好名字要花时间,但是省下来的时间比花掉的多。注意命名,而且一旦发现有更好的名称,就要换掉旧的,这么做,读你的代码的人都会开心。

    如果名称需要注释来补充,那就不算是名副其实。

    int d; //消逝的时间,以日计;

    名称d什么都没有说明,它没有引起对消逝时间的感觉,更别说以日计了,我们应该选择了计量对象和计量单位的名称;

    int elapsedTimeInDays;
    int daysSinceCreation;
    int daysSinceModification;
    int fileAgeInDays

    只要简单改一下名称,就能轻易知道发生了什么,这就是选用好的名称的力量.

  2. 避免误导

    别用accountList来指称一组账号,除非它真的是List类型。List一词对程序员有特殊的意义。如果包含账号的容器并非真是个List,就会引起错误的判断,所以,用accontGroup或者bunchOfAccounts,甚至直接用accounts都会好一些.

  3. 做有意义的区分

    以数字系列命名(a1,a2,…aN)这样的名称纯属误导–完全没有提供正确信息,没有提供意图线索,

public static void copyChars(char a1[], char a2[]){
    for(int i = 0; i< al.length, i++){
        a2[i] = 1[i];
    }
}

如果参数名字改为source和destination,这个函数就会像样许多。

废话是另外一种没有意义的区分,假设你有一个Product类,如果还有一个ProductInfo或者ProductData 类,虽然他们的名称不同,意思却无区别

  1. 使用读出来的名称

    如果名称读不出,讨论的时候就会像个傻鸟。
    在有家公司,程序里面写了个genymdhms(生成日期,年,月,日,时分秒),实际是在强忍糟糕的命名,在给新开发者解释变量的意义时,他们总是读出傻乎乎的自造词,而非恰当的英语词语。

    private Data generationTimestamp;

    现在读起来就像人话了。

  2. 使用可搜索的代码

    单个字母和数字常量有个问题,就是很难在一篇文字中出来。
    采用能表达意图的名称,貌似拉长了函数代码,但是想想看,WORK_DAYS_PER_WEEK要比数字5好找得多,而列表也只剩下了提现作者的意图

  3. 编码使用编码
    1.成员前缀
    也不必用 m_前缀来表明成员变量,应当把类与函数做的足够小,消除对成员前缀的需要
    2.接口和实现
    接口令名采取Imp合理点.

  4. 每个概念对应一个词
    在同一堆代码中有controller,又有manager,又有driver,就会令人困惑,之间有什么区别,为什么不全用contrllllers或者managers。他们都是drivers。
    对于那些会用到你的代码的程序员,一以贯之的命名法简直是天降福音。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值