首页 > 代码库 > 规定自己的Java编码规范

规定自己的Java编码规范

给自己规定了Java编码规范,编写Java代码严格按照自己规定的格式。欢迎大家指出问题。


/*
*COPYRIGHT
*/


package com.triangle23.projectabbreviationname.modulename.???.???.
##1.所有字母都是用小写,不要有特殊字符
##2.组合单词的每个部分都写全拼,连接时各个部分之间不要有特殊符号,组合单词不要超过三个,每个部分都用名词,尽量用英文,中文的话用拼音
##3.projectabbreviationname和modulename如果用中文词组由拼音首字母组成,不要超过16个字母

import java.util.Date;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import com.triangle23.???.ClassName;
import com.triangle23.???.ClassName.methodName;

import com.adrastos.???.ClassName.methodName;

##1.引用的顺序是Java核心包库->Java扩展包库->第三方开源类库->自己或别的公司的类库
##2.引用时做到最小引用,即只引入用到的最小范围(如只使用了某个类的某个方法,只需引入该方法即可)
##3.用空白行区分不同类别的引用


/**
*Description:
*
*
*@author triangle23.lzl@gmail.com
*@version number(1.0), date
*
*Revision History:
* <who>   <when>   <what>
* ???      ???      ???
*/
public class ClassName extends FatherClassName implements InterfaceName1, InterfaceName2{
##1.类/接口名都应是名词组成,且每个单词第一个字母均为大写

	/**static CONSTENT_NAME1的注释*/
	static final int CONSTENT_NAME1 = 1;
	/**static CONSTENT_NAME1的注释*/
	static final String CONSTENT_NAME2 = "Hello World!";
	##1.常量的定义放在最前面
	##2.常量的变量名有若干有意义单词组成,每个字母全部大写,之间用"_"分割

	/**static interfaceVar1的注释*/
	public static InterfaceName interfaceVar1;
	/**static interfaceVar2的注释*/
	protected static InterfaceName[] interfaceVar2;
	/**static interfaceVar3的注释*/
	private static InterfaceName interfaceVar3;
	/**
	*static interfaceVar4的注释
	*超过两行
	*/
	public static InterfaceName interfaceVar4;
	/**
	*static interfaceVar5的注释
	*超过两行
	*/
	protected static InterfaceName[] interfaceVar5;
	/**
	*static interfaceVar6的注释
	*超过两行
	*/
	private static InterfaceName interfaceVar6;
	##1.与前一级别的变量组之间留有一个空白行
	##2.多个接口声明之间不留有空白行
	##3.变量名称见通用规则
	##4.变量定义的顺序是安可见性由大到小排列,由单个变量到数组变量
	##5.调用类中静态接口变量需要使用ClassName.interfaceVar1,不能使用variableClassName.interfaceVar1

	/**static classVar1的注释*/
	public static ClassName classVar1;
	/**static classVar2的注释*/
	protected static ClassName[] classVar2;
	/**static classVar3的注释*/
	private static ClassName classVar3;
	/**
	*static classVar4的注释
	*超过两行
	*/
	public static ClassName classVar4;
	/**
	*static classVar5的注释
	*超过两行
	*/
	protected static ClassName[] classVar5;
	/**
	*static classVar6的注释
	*超过两行
	*/
	private static ClassName classVar6;
	##1.与之前的静态接口变量之间留有一个空白行
	##2.变量名称见通用规则
	##3.变量定义的顺序是安可见性由大到小排列,由单个变量到数组变量
	##4.多个类声明之间不留有空白行
	##5.调用类中静态类变量需要使用ClassName.classVar1,不能使用variableClassName.classVar1

	public static int variableName1; //注释
	protected static String[] variableName2; //注释
	private static long variableName3=1.0l; //注释
	##1.与前一级别的变量组之间留有一个空白行
	##2.变量名称见通用规则
	##3.变量定义的顺序是安可见性由大到小排列,由单个变量到数组变量
	##4.多个静态变量之间不留有空白行
	##5.如果只是简单的值,在声明的时候就要赋值
	##6.变量到用的时候再赋值
	##7.调用类中静态变量需要使用ClassName.variableName1,不能使用variableClassName.variableName1

	public int variableName4; //注释
	protected String[] variableName5; //注释
	private long variableName6=1.0l; //注释
	##1.与前一级别的变量组之间留有一个空白行
	##2.变量名称见通用规则
	##3.变量定义的顺序是安可见性由大到小排列,由单个变量到数组变量
	##4.多个实体变量之间不留有空白行
	##5.如果只是简单的值,在声明的时候就要赋值
	##6.变量到用的时候再赋值

	static{

	}
	##1.静态代码块
	##2.与变量之间留有一个空白行

	public ClassName(){

	}

	protected ClassName(Object object){

	}

	private ClassName(Object object, int variableName){
	super.object = object;
	this.variableName = variableName;
	}
	##1.构造函数按照可见级别进行分类,相同可见级别之间按照参数个数排序
	##2.每个构造函数之间都要留有一个空白行
	##3.当形参给类或父类的变量赋值时必须写上super或者this
	##4.类中使用自己的方法时必须用this.doMethodName(),调用父类的方法时用super.doMethodName()

	public int getVariableName6(){
		return this.variableName6;
	}

	private void setVariableName6(int variableName6){
		this.variableName6 = variableName6;
	}
	##1.是否需要get和set方法看实际需求
	##2.注意get和set方法的可见性
	##3.同一个变量的get和set顺序无所谓
	##4.注意get和set方法的名称一定是get/setVariableName6,一般使用IDE生成
	####5.get和set方法的放置位置还没有定,初定构造函数后面

	/**
	*方法说明
	*
	*@author authorName  updateDate
	*@return returnType
	*/
	public static returnType doMethodName1(){
		##方法名称的一个单词应为动词且首字母小写后面组合单词首字母大写
		int localVariableName1; //注释
		List<ClassName> localVariableName2; //注释
		String[] localVariableName3; //注释
		returnType returnTypeVariableName;
		##1.注意局部变量尽量不要和上层变量重名

		业务逻辑

		for(int i = 0; i < count; ++i){
			/**for循环条件说明*/
			int forLocalVariableName1; //注释
			.
			.
			.

			业务逻辑
		}

		for(VariableType variableType : iteratorVariableName){
			/**for循环条件说明*/
			int forLocalVariableName1; //注释
			.
			.
			.

			业务逻辑
		}

		while(booleanEquation){
			/**while条件说明*/
			int whileLocalVariableName1; //注释
			.
			.
			.

			业务逻辑
		}

		do{
			/**do while条件说明*/
			int doWhileLocalVariableName1; //注释
			.
			.
			.

			业务逻辑
		}while(booleanEquation);

		if(booleanEquation){
			/**if条件说明*/
			int ifLocalVariableName1; //注释
			.
			.
			.

			业务逻辑
		}else if(booleanEquation){
			/**else if条件说明*/
			int elseIfLocalVariableName1; //注释
			.
			.
			.

			业务逻辑
		}else{
			int elseLocalVariableName1; //注释
			.
			.
			.

			业务逻辑
		}

		switch(booleanEquation){
			case NO.1:
			/**NO.1条件说明*/
			业务逻辑
			case NO.2:
			/**NO.2条件说明*/
			业务逻辑
			break;

			.
			.
			.

			case NO.n:
			/**NO.n条件说明*/
			业务逻辑
			break;
			default:
			/**default条件说明*/
			业务逻辑
		}

		return returnTypeVariableName;
		##1.return 要和之前的业务逻辑代码之间和方法结束代码各留有一个空白行

	}
	##1.调用类中静态方法需要使用ClassName.doMethodName1(),不能使用variableClassName.doMethodName1()

	/**
	*方法说明
	*
	*@author authorName  updateDate
	*@param object  object‘s explanation
	*@return returnType
	*@throws RuntimeException Exception
	*
	*/
	protected returnType doMethodName2(Object object) throws RuntimeException, Exception{

	规则见上一个静态方法

	}

	/**
	*方法说明
	*
	*@author authorName  updateDate
	*@param object  object‘s explanation
	*@param variable  variable‘s explanation
	*@return returnType
	*
	*/
	private returnType doMethodName3(Object object, int variable){

	规则见上上个静态方法

	}
	##1.方法的按可见性由大到小排序,相同可见性可以按名称排序或者按参数个数排序,排序可以灵活
}


class ClassName extends FatherClassName implements InterfaceName1, InterfaceName2{
	规则见上个public类
}
.
.
.

#####################################################################
1.一个文件中只有一个为public的类
2.每行的代码长度不要超过70列
3.注意代码缩进
4.变量名称应短小有意义,第一个单词应为名词且首字母小写,后面组合单词部分首字母大写
5.变量名称除循环使用的控制循环的变量外,严禁使用a,b,c,i,j,k等单个字母
6.所有临时变量开头应以temp开头,并在代码审查的时候尽量去除掉
7.临时的任务用//TODO 注释,并且保证最后提交代码没有可以完成的TODO部分还保留TODO关键字
8.当booleanEquation有多个判断条件时,注意使用括号加以区分
9.可见性的范围一定要注意,不需要对类外部公布的就设置为对外不可见
10.如果类继承Serializable接口,尽量使用private static final long serialVersionUID = 1L;这个默认值
11.get和set的类的私有变量类型要使用基本类型的封装类,如Integer, Long等
#####################################################################