命名的几条简单规则
名副其实
变量、函数和类的名称应该已经答复了所有的大问题。它应该告诉你,它为什么会存在,它做什么事,应该怎么用。如果名称需要注释来补充,那就不算是名副其实。

虽然一些代码没有复杂的表达式,问题不在于代码的简洁度,而在于代码的模糊度:即上下文在代码中未被明确的体现的程度。所以简介的代码需要了解例如数组下标的意义,一些值和变量的意义,这是什么类型,返回会返回这数据类型的值等

优化方案:
比如,我们在开发一种扫雷游戏,我们发现盘面是名为theList的单元格列表,那就将其名称改为gameBoard, 我们还发现,下表其实是一种状态值,而状态值为4标识“已标记”。只要改为由意义的名称,代码就会得到相当程度的改进

更进一步,不用个int数组标识单元格,而是另外写一个类。该类包括一个名副其实的函数(成为isFlagged),从而掩盖那个魔术数

避免误导
一些专有名词不应该用作变量名,如 “hp”,“aix”,“sco”等;避免使用在不同的地方但是区别较小的名称,想区分模块某处的XYZControllerForEffcientHandilingOfStrings和另一处的XYZControllerForEfficienStoorageOfStrings,会话很长时间。
以同样的方式拼写出相同概念才是信息,拼写前后不一致就是误导。极端的例子, 使用消息字符l和大写字母O作为变量名。
做有意义的区分
不要为了满足编译器而写代码,光是添加数字或是废话是远远不够的,即便这足以让编译器满意。如果名称必须相异,那其意思也应该不同才对。
以数字系列命名(a1、a2)是依义命名的反面,容易误导,完全没有提供正确信息。

变量名无意义的废话是不必要的,也无助于区分。假如你有一个Product类,还有一个ProductInfo或者是ProductData类,虽然名称不同,但却无区别。

使用读得出来的名称
命名的变量应该具有良好的可读性

使用可搜索的名称
查找MAX_CLASSES_FER_STUDENT很容易,而查找e很困难。单字母名称仅用于短方法中的本地变量。名称的长短应与其作用域大小相对应。若常量或者变量可能在多处使用,则应赋予其便于搜索的名称。

避免使用编码
把类型或者作用域编进名称里,突然增加了了解码的负担。没有理由要求每位新人都在弄清应付的代码之外,还要再搞懂另一种编码“语言”
成员前缀
也不必使m_ 前缀来表明成员变量。应当把类和函数做得足够小,消除对成员前缀的需求。

类名及方法名
类名对象应该是名字或名词短语,如Customer、WikiPage、Account等,并且类名不应该是动词。
方法名应当是动词或动词短语,如postPayment、deletePage或save等。属性访问器、修改器和判断应该根据其值命名,并依据==Javabean标准加上get、set或is前缀==。

别扮可爱
如果名称太耍宝,那就只有同作者一般有幽默感的人才能记住。
每个概念对应一个词
给每个抽象概念选一个词,避免在多个类中使用相同名称的方法名,这不便于区分方法所属的类。
别用双关语
避免将同一个单词用于不同目的。同一术语用于不同概念,基本就是双关了。
使用解决方案领域名称
只有程序员才会读你的代码,所以,尽量使用计算机科学术语、算法名、模式名、数学名。
添加有意义的语境
不添加无意义的语境
小结
多数时候我们并不记忆类名和方法名,我们使用现代工具对付这些细节,好让自己集中精力把代码写得更好。
可以试试以上的规则,看看代码可读性是否还可以提高