Java编码指南(1)

1          命名规范

1.1     Package命名规范

【JAVA-1】       Package名要使用小写字,中间用“.”分割【规定】

说明·原因

如无特殊规定,请将Package名统一成小写字。这是Java的一般规则。

package cn.co.AAA.BBB; //错误

package cn.co.aaa.bbb; //正确

 

【JAVA-2】       Package名要有意义【规定】

说明·原因

尽量给Package命名一个能联想到Package内容的名字。如果使用功能ID、流水号等来命名Package的话,不能马上明白其意思。遵守此规范,将提高代码的易读性。

package cn.co.aaa.bbb.s00001; //错误

package cn.co.aaa.bbb.station; //正确

 

【JAVA-3】       Package名是不可省略的【规定】

说明·原因

即使Package名长,也请尽量不要省略,而使用易懂的名字。

package cn.co.aaa.bbb.t.e.s.t; //错误

package cn.co.aaa.bbb. test; //正确

 

【JAVA-4】       package名中禁止使用除小写英语句半角字母以外的任何字符,但是根据需要可以使用下划线“_”【规定】

package cn.co.aaa.bbb.my_app;

 

1.2     Import命名规范

【JAVA-5】       Import包的次序是java.* →javax.* →中间件、库等提供的package→ 程序中的package【规定】

import java.util.HashMap;

import java.util.Map;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.apache.log4j.Appender;

import org.apache.log4j.Category;

 

import cn.co.aaa.bbb.thatpack;

 

【JAVA-6】       Import需要指出import哪一个类,禁止import整个package【推荐】

import java.util.*; //错误

import java.util.HashMap; //正确

 

1.3     Class命名规范

【JAVA-7】       Class的名称应该是一个名词短语。可以是“形容词/名词 + 名词”的形式【推荐】

public class InputDataStream{

public class OrderItem{

public class Developer{

 

【JAVA-8】       Class名要能体现其作用【推荐】

说明·原因

Class名中,请不要使用功能ID、流水号等难懂的名字。Class名要使用有意义的字符串,以便能联想到其Class的内容。这样将提高代码的易读性。

public class S0001 { //错误

public class Sample { //正确

 

【JAVA-9】       Class名中单词的第1个字母要大写【规定】

说明·原因

请大写Class名的第1个字母。当Class名由多个单词组成时,每个单词的第1个字母(段落)都要大写。这是Java的一般规则。

public class sampleclass { //错误

public class SampleClass { //正确

 

【JAVA-10】   异常Class名的最后要加上“Exception” 【推荐】

说明·原因

对异常Class名,请在名字最后加上“Exception”。统一此写法,将提高代码的易读性。

public class Sample extends Exception{ //错误

public class SampleException extends Exception{ //正确

 

【JAVA-11】   Interface名要基于Class名【推荐】

说明·原因

Interface的命名规则基本上要基于Class名。统一此写法,将提高代码的易读性。如果需要与Class名区分,请在开头加上“I”。

public class Sample implements ISample { //Interface名为ISample

 

【JAVA-12】   抽象Class名要基于Class名【推荐】

说明·原因

抽象Class名的命名规则基本上要基于Class名。统一此写法,将提高代码的易读性。名字要以“Abstract”开始,再加上能联想到Subclass名的名字。

public abstract class AbstractSample { //抽象Class名为AbstractSample

 

【JAVA-13】   实现Class名要基于Class名【推荐】

说明·原因

实现Class名的命名规则基本上要基于Class名。统一此写法,将提高代码的易读性。如果需要与Interface区分,请在最后加上“Impl”。

public class SampleImpl implements ISample { //实现Class名为SampleImpl

 

【JAVA-14】   在能力附加型的Interface名后面加上“able” 【推荐】

说明·原因

对于Class来说,会存在附加某能力的Interface,如Runnable, Cloneable等。定义能力附加型的Interface时,请使用能表示其能力的形容词(~able)来命名。统一此写法,将提高代码的易读性。

public class Sample implements IPluggable {

 

【JAVA-15】    Test Class名的格式为“测试对象Class名 + Test” 【推荐】

说明·原因

Test Class名的格式为“测试对象Class名 + Test”。统一此写法,将提高代码的易读性。以下的例子是考虑了JUnit 的例子。

public class SampleClassTest extends TestCase{

 

【JAVA-16】   进行测试或Package测试的所有的Class名的格式为“AllTest”或“Package名 + Test” 【推荐】

说明·原因

进行测试或Package测试的所有的Class名的格式为“AllTest”或“Package名 + Test”。统一此写法,将提高代码的易读性。

public class AllTest {

 

package cn.co.aaa.bbb;

public class StationTest {

 

1.4     Method命名规范

【JAVA-17】    Method名只在段落时采用大写字【规定】

说明·原因

关于Method名,只有一个单词时,全部采用小写字。当由多个单词组成时,第2个以后的单词的第1个字母要大写。这是Java的一般规则。

public void Samplemethod() {} //错误

public void sampleMethod() {} //正确

 

【JAVA-18】   生成Object的Method名的格式是“"create"+Object名” 【推荐】

说明·原因

关于生成Object的Method(Factory Method)名,以“create”开始,并在其之后加上此Method生成的Object名。统一此写法,将提高代码的易读性。

public Sample createSample(){

 

【JAVA-19】   转换Method名的格式是“"to"+Object名” 【推荐】

说明·原因

关于将Object转换成其他Object的Method(Converter Method),以“to”开始,并在其之后加上转换后的Object的名字。统一此写法,将提高代码的易读性。

public Another toAnother(){

 

【JAVA-20】    Getter Method名的格式是“"get"+属性名” 【推荐】

说明·原因

关于取得属性的Method(Getter Method)的名字,以“get”开始,并在其之后加上取得的属性名。统一此写法,将提高代码的易读性。这是JavaBeans的规范。

public String getSampleName(){

 

【JAVA-21】    Setter Method名的格式是“"set"+属性名” 【推荐】

说明·原因

关于设定属性的Method(Setter Method)名字,以“set”开始,并在其之后加上设定的属性名。统一此写法,将提高代码的易读性。这是JavaBeans的规范。

public void setSampleName(String name){

 

【JAVA-22】   返回值为boolean类型的Method的名称应能看出true/false的状态【推荐】

说明·原因

关于返回boolean变量的Method名,要能看出其返回值的true/false指的是什么样的状态。推荐使用表示Yes或No的疑问句的描述形式(例:is+名片)。统一此写法,将提高代码的易读性。

public boolean isAsleep(){

public boolean canSpeak(){

public boolean hasExpired(){

public boolean exists(){

public boolean hasValue(){

 

【JAVA-23】   在查询方法中应使用find作为前缀【推荐】

说明·原因

public String findNameByID (String ID){

 

1.5     变量命名规范

【JAVA-24】   常量全部为public static final、全部是大写字、段落用“_” 【规定】

说明·原因

常量全部用static final声明,变量名全部用大写字描述。常量名由多个单词组成时,各单词之间用“_”分开。统一此写法,将提高代码的易读性。另外,一般把常量的public修饰改成protected和private没有特别大的意义。

public static final int SAMPLE_VALUE = 10;

 

【JAVA-25】   变量名要反映其作用【规定】

说明·原因

变量名要能反映出其作用。统一此写法,将提高代码的易读性。

private String str1;

private String str2; //错误

private String serverName;

private String clientName; //正确

 

【JAVA-26】    Instance变量名的格式是“’_+变量名”【推荐】

说明·原因

关于Instance变量名,请用“_”和Method的Parameter名或Local变量名来区分。这样将提高代码的易读性。

private String name;

public void setName(String name){

    this.name = name;

} //错误

private String _name;

public void setName(String name){

    this._name = name;

} //正确

 

【JAVA-27】    Instance的字段名全部使用大写字【规定】

说明·原因

关于Instance的字段名,必须全部使用大写字。Instance的字段经常会是static及final。因此,需要对这些字段,按照与常量名相同的命名规则来命名。

interface IFV {
    int max = 1000;  // 错误
}
interface IFV {
    int MAX = 1000;  // 正确
}

你可能感兴趣的:(Java)