Java编码规范,让你的代码赏心悦目--有意义的命名
2017-09-05 22:17
543 查看
名副其实
变量,函数,类的命名应该告诉我们它做什么事。如果需要注释来补充,就不算是名副其实。
避免误导
避免使用与本意相悖的词。
提防使用不同之处较小的名称。
用小写字母"l"和大写字母"O"作为变量名。它们太像零和壹了
做有意义的区分
函数中的参数命名也应该具有意义
废话是另一种没意义的区分
区分名称要以鉴别不同之处的方式来区分。
使用读得出来的名称
不要使用自造词
使用可搜索的名称
单字母名称和数字常量在搜索的时候很麻烦。因为它们很可能是某些文件名或其他常量的一部分。
单字母名称仅用于段方法中的本地变量;
若变量或常量可能在代码中多处使用,则应赋其以便于搜索的名称;
避免使用编码
不要将类型或作用域编进名称里面;
不要使用类似"m_"这样的前缀来表明成员变量。应当把类和函数做得足够小,消除对成员前缀的需要;
在接口前加"I"意义不大,因为我们展示给用户的基本是接口的实现。在实现后加类似"Impl"这种反而会好一点;
类名
类名和对象名应该是名词或名词短语,不应当是动词;
方法名
方法名应当是动词或动词短语
属性访问器,修改器和断言应该根据其值命名,并根据JavaBean加上get,set和is前缀
每个概念对应一个词
给每个抽象概念选一个词,并且一以贯之;
使用解决方案领域名称
只有程序员才会读你的代码,尽管使用那些计算机科学术语,算法名之类的吧;
如果不能使用程序员熟悉的术语来给手头的工作命名,就采用从所涉问题领域而来的名称;
添加有意义的语境
很少有名称是能自我说明的;
不要添加没用的语境
变量,函数,类的命名应该告诉我们它做什么事。如果需要注释来补充,就不算是名副其实。
int d;//消逝的时间,以日计。名称d什么也没说明,要靠注释说明自身 |
来看几个更好的例子: |
int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; |
避免使用与本意相悖的词。
hp,aix,sco都不该做变量名,因为它们都是UNIX平台的专有名称 |
别用accountList来代表一组账号,除非它真的是List类型。 如果这个变量的类型容器并非是List,那么使用accountGroup或bunchOfAccounts,或者直接使用accounts都会好一些 |
XYZControllerForEfficienHandlingOfStrings与 XYZControllerForEfficientStorageOfStrings实在是太相似了 |
做有意义的区分
函数中的参数命名也应该具有意义
a1与a2替换为source和destination会更好一些 |
Product类,还有一个ProductInfo类或ProductData类。名称虽然不同,意思却无区别。Info和Data就像a,an和the一样 |
Variable一词不要出现在变量名中。Table一词不应出现在表中。NameString会比Name好吗?难道它会是一个浮点数? |
使用读得出来的名称
不要使用自造词
使用可搜索的名称
单字母名称和数字常量在搜索的时候很麻烦。因为它们很可能是某些文件名或其他常量的一部分。
单字母名称仅用于段方法中的本地变量;
若变量或常量可能在代码中多处使用,则应赋其以便于搜索的名称;
避免使用编码
不要将类型或作用域编进名称里面;
不要使用类似"m_"这样的前缀来表明成员变量。应当把类和函数做得足够小,消除对成员前缀的需要;
在接口前加"I"意义不大,因为我们展示给用户的基本是接口的实现。在实现后加类似"Impl"这种反而会好一点;
类名
类名和对象名应该是名词或名词短语,不应当是动词;
正确:Customer,WikiPage |
错误:Manager,Processor |
方法名应当是动词或动词短语
正确:postPayment,deletePage |
每个概念对应一个词
给每个抽象概念选一个词,并且一以贯之;
使用fetch,retrieve和get来给在多个类中的同种方法命名 |
只有程序员才会读你的代码,尽管使用那些计算机科学术语,算法名之类的吧;
如果不能使用程序员熟悉的术语来给手头的工作命名,就采用从所涉问题领域而来的名称;
添加有意义的语境
很少有名称是能自我说明的;
firstName,lastName,street,houseNumber,city,state,zipcode它们放一块,就构成了一个地址 |
但是如果在某个方法中孤零零一个state变量呢? 可以添加addrFirstName,addrLastName,addrState以此提供语境。更好的方案是创建名为Address的类 |
对于Address类的实体来说,accountAddress和customerAddress都很不错,但用在类名上不太好;Address是个好类名,如果需要与MAC地址,端口地址和Web地址相去呗,我会考虑使用PostalAddress,MAC和URI。这样名称更为精确; |
相关文章推荐
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--有意义的命名
- Java编码规范,让你的代码赏心悦目--函数
- Java编码规范,让你的代码赏心悦目--格式
- Java编码规范,让你的代码赏心悦目--对象和数据结构
- Java编码规范,让你的代码赏心悦目--错误处理
- Java编码规范,让你的代码赏心悦目--函数
- Java编码规范,让你的代码赏心悦目--格式