java语言规范
语言的本质
任何一门语言都是用来交流的,都有自己的一套书写规范,Java 也不例外。不遵循规范,则会产生交流问题。
注重这些细节有几个好处
- 好的命名规范可以使得写出来的程序更容易被别人理解,更好维护。当然也易于自己理解,以便日后扩展。
- 同时,也使程序更规范和专业。
- 在这个人性化横行的今天,我们的Java命名规范也应该注重体验。共性和个性应该并存。共性则是专业、规范;个性则是每个人优秀思想的渗透。
了解命名规范,可以更好的学习和记忆 Java 类库中的类和函数等。
在命名规范里有很多都涉及到英文的,可以促进英文学习。
比如: numberMax, MaxNumber和maxNumber都是有区别的。- maxNumber可能是属性名
- MaxNumber一般是类名
- numberMax更倾向于方法。
这里也有一个英文的搭配问题。
比如:FileRead, FileReader, 这个显然后者作为类名好些。
readFile,fileRead, 这个显然前者作为方法更合适。
一些原则
下面的几个原则是编写 Java 程序必须遵守的
如果没有非常好的理由,永远不要违背他。
包
由小写字母和少量数字组成
Java 自己的包以 java. 和 javax 开头,比如:java.awt
别的组织开发的包以 组织的 Internet 域名部分开头,比如:com.sun, com.borland
一些例子:
com.aliasi.hmm; com.aliasi.classify; com.aliasi.cluster;
com:组织; aliasi:具体的组织名或者个人; classify,cluter:包名(主题)
org.apache.lucene; org.apache.lucene.analysis.standard;
org.apache.nutch.ndfs; org.apache.nutch.fs; org.apache.nutch.db; org.apache.nutch.parse;推荐使用公司或机构的顶级域名为包名的前缀,目的是保证各公司/机构内所使用的包名的唯一性,包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词,包名统一使用单数形式。如果类名有复数含义,类名可以使用复数形式。
类,接口
由一个或几个单词组成,每个单词的第一个字母大写,比如:StringBuffer
类:一般用名词和名词词组命名; IndexOptimizer.java; WebDbReader.java
接口:与类相同,可以使用形容词词缀,比如 Runnable, Comparable类名使用 UpperCamelCase 风格(首字母都大写),必须遵从驼峰形式。 例如: MessageUtil. 抽象类命名使用 Abstract 或 Base 开头 ; 异常类命名使用 Exception 结尾 ; 测试类命名以它要测试的类的名称开始,以 Test 结尾。
方法
除第一个字母小写外,和类,接口的命名规则一样。比如:getPersonInfo()
对于取属性值和设置属性值的方法:
不管是否是 Bean,都要遵循 JavaBean 命名规范:getXXX(), setXXX()
转换对象类型返回不同类型的方法:
命名成 toType,比如:toString(), toArray()
返回视图的方法:
命名成 asType() 形式,asList()
返回与调用此方法的对象(Wrapper Class)同值的原始类型的方法:
命名成 typeValue() 形式,比如 intValue(), floatValue()
parseCharacterEncoding(String);方法名、参数名、成员变量、局部变量**都统一使用 lowerCamelCase 风格(第一个单词首字母小写,其他单词首字母大写),必须遵从驼峰形式。 例如: myFirstName
域(属性)
普通域:
除第一个字母小写外,和类,接口的命名规则一样。比如:personInfo
常数域:
由一个或多个被下划线分开的单词组成,比如:VALUES, NEGATIVE_INTINITY
常数域是唯一允许使用下划线的情况。局部变量
命名与域相同,可以使用简写,比如:i, j, temp, maxNumber
java访问权限
适用 | public | protected | default | private |
---|---|---|---|---|
同类 | T | T | T | T |
同包 | T | T | T | |
子类(不同包) | T | T | ||
不同包无继承关系 | T |
总结
- 注重细节,培养良好的规范,变成习惯。无关乎项目大小,是一种习惯。否则越积累越多,就容易崩塌。 不积跬步无以至千里。
- 定义一个类和一个方法并不是太复杂,当有非常多的类、方法、变量的时候才复杂,因为这些类既有区别,又有千丝万缕的继承和调用关系,这时候一致性设计,并易于理解和记忆,并方便扩展和调用则需要慢慢的体会了。既然能用语言实现复杂的功能和体现伟大的思想,那么这门语言本身肯定也蕴育着很多哲学。
- 它来源于生活,高于生活,又应用与生活。