有意义的命名
从真正意义上的来说,2016.10.29是我真正入职以来,一个团队完成的出海app.当然期间遇到了许多的问题,但是最终还是依依攻破.在最后的时候,组长让我们回去反思下,这是的项目问题,已经推荐了一本书让我们回去看下《代码整洁之道》,因此才有了如下的几篇文章!
名副其实
选个好名字要花时间,但是省下来的时间比花掉的多。注意命名,而且一旦发现有更好的名称,就要换掉旧的,这么做,读你的代码的人都会开心。
如果名称需要注释来补充,那就不算是名副其实。
int d; //消逝的时间,以日计;
名称d什么都没有说明,它没有引起对消逝时间的感觉,更别说以日计了,我们应该选择了计量对象和计量单位的名称;
int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays只要简单改一下名称,就能轻易知道发生了什么,这就是选用好的名称的力量.
避免误导
别用accountList来指称一组账号,除非它真的是List类型。List一词对程序员有特殊的意义。如果包含账号的容器并非真是个List,就会引起错误的判断,所以,用accontGroup或者bunchOfAccounts,甚至直接用accounts都会好一些.
做有意义的区分
以数字系列命名(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 类,虽然他们的名称不同,意思却无区别
使用读出来的名称
如果名称读不出,讨论的时候就会像个傻鸟。
在有家公司,程序里面写了个genymdhms(生成日期,年,月,日,时分秒),实际是在强忍糟糕的命名,在给新开发者解释变量的意义时,他们总是读出傻乎乎的自造词,而非恰当的英语词语。private Data generationTimestamp;
现在读起来就像人话了。
使用可搜索的代码
单个字母和数字常量有个问题,就是很难在一篇文字中出来。
采用能表达意图的名称,貌似拉长了函数代码,但是想想看,WORK_DAYS_PER_WEEK要比数字5好找得多,而列表也只剩下了提现作者的意图编码使用编码
1.成员前缀
也不必用 m_前缀来表明成员变量,应当把类与函数做的足够小,消除对成员前缀的需要
2.接口和实现
接口令名采取Imp合理点.每个概念对应一个词
在同一堆代码中有controller,又有manager,又有driver,就会令人困惑,之间有什么区别,为什么不全用contrllllers或者managers。他们都是drivers。
对于那些会用到你的代码的程序员,一以贯之的命名法简直是天降福音。