java 项目规范
1、代码构成
1文件头:
/*
* (C) Copyright 2014 Beijing XXX Co., Ltd
* All Rights Reserved.
*/
2包: ·文件需要应用的包,必须引用到具体的类,不能以[*]来代替。
3属性: ·按照 Public -> protected -> 未指定 -> private的顺序来编写。
4方法: 请按照以下顺序编写。
·构造函数 -> 非静态方法 -> 静态方法。
· public -> protected -> 未指定 -> private。
2、命名规范
1公共
名称必须要要用英文【严格禁止拼音】
不可以通过大小写来区别名字
名字不能以"_"等特殊字符开头。
名字中各个单词的首字母必须大写,其他的小写(类名和接口名遵守此规范)
2包命名
包命名中不能有重复的名字
包名必须全部小写
包中不能包含"_"等特殊字符。
与业务相关的包命名格式为:
cn.com.caissa.<projectName>.<subSystem>.<moduleName>
·<projectName>为项目英文名称或英文简称或英文缩写。
·<subSystem>为子系统名
·<moduleName>为模块英文名称或英文简称或英文缩写,如果无细分模块的话可以省略。
与业务无关的包命名格式
cn.com.caissa.<projectName>.<subSystem>.common
根据共通的范围大小可以调整包的路径,如工程共通用和子系统共通用和某一个模块内共通用。
3类命名
类的名称要有意义,并且使用完整的英文单词,如果单词过长,则要使用易于理解的单词缩写。
不要定义JDK中已经有的类。
接口的实现类为去掉接口开头的字母I,在结尾加上Impl。
所有抽象类的名字必须以【Abstract】开头。
所有异常类的名字必须以【Exception】结尾。
所有接口类的名字必须以"I"开头。
4变量
采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。
应该简短有意义,能够指出其用途。但是例如循环因子可以使用诸如“i”之类的变量。
类的引用命名首字母要小写,其后单词的首字母大写。引用名要有意义
接口的引用名首字母要小写,其后单词首字母大写。引用名要有意义
集合的引用命名采用引用名 + 后缀
后缀命名规则参考如下:
List List
Map Map
Set Set
5常量
常量的名字要全部大写,单词之间要以"_"隔开,并且使用final static修饰
6方法名
方法名要以动词加名词的形式组织,首字母小写,后边的单词的首字母都是大写。
set/get方法 方法名为 "set+属性名" 或者 "get+属性名" boolean类型取得方法为 "is+属性名" 属性存取的getter和setter方法,使用系统生成的即可
3、集合
原则上,不用使用Vector,Hashtable.
不要返回NULL的集合类,返回元素个数是0个集合类。
集合类型声明时,应该声明接口类型,而非具体的实现类。
集合使用时必须加泛型
4、日志
方法的入口和出口要写log
发生错误的时候需要打印日志
作为系统接口的时候
循环中不能写日志
工具类中不能写日志
处理复杂业务需要加入日志
5、代码规范
如果抛出的是自定义异常,则必须要有详细信息:哪个类,哪个方法
变量的使用域要尽量的小,做到用到的时候在声明,声明和使用要在一起
变量声明应该放在for,if,while,switch等语句的外面
循环处理和if条件判断中,不用使用return,一个方法只有一个返回点
循环的层数要少于3层
循环内不能使用"+"来连接字符串要使用,StringBuffer来连接字符串
循环内不要使用list.contain来查询元素,尽量使用Map来查找元素
循环内不要使用open.或者close等IO操作
循环内不要try catch 的操作,应该放在循环的外部
循环内尽量不要做生成对象的操作
所有传入的参数要进行非空的验证
方法参数必须是有效的必须的
方法参数限制,每个方法的参数不可以超过5个。
不重复实现API已提供的功能,例如StringUtils.isEmpty()
IO操作等需要在使用结束后close()的对象都必须在try-catch-finally的finally中close()。
注意运算符的优先级,并用括号明确表达式的运算顺序,避免使用默认优先级。
二元运算符(除去"/")、二元逻辑运算符、赋值运算符,即"+、-、*、%、+=、-=、*=、/=、%=、<、>、==、<=、>=、="等符号左右两边要加半角空格
类的长度
通常: 400行
最大: 1000行(包含注释)
方法的长度
通常: 80行 最大: 300行(含注释)