通用规则
- 源代码就是设计:简洁、关注命名、不鼓励太多注释;
- 除非特殊原因(比如properties文件固定要求使用ISO-8859-1编码),文件优先选择UTF-8无BOM编码格式;
- 在catch{}中严禁使用Exception 的printStackTrace()方法,不能处理的错误建议转为RuntimeException抛出;
- 通过finally{}释放关键的资源 ;
- 尽力避免 SQL 注入风险:通过PrepareStatement 执行 SQL语句,避免 SQL语句的拼接;
- 一般 API 方法名首字母小写, Yigo 二次开发公式方法名首字母大写 ;
关于通用类库
使用推荐的第三方工具库:
Apache Commons:
http://commons.apache.org/
Google Guava:
https://github.com/google/guava
Jodd:
https://github.com/oblac/jodd
1.1 Java程序编码规范
- 缩进采用4个空格
- 注意{ }的对齐
for (...)
{
... // program code
}
- 较长的语句、表达式或参数要分成多行书写
- 不允许把多个短语句写在一行中,即一行只写一条语句
- if, for, do, while, case, switch, default 等语句自占一行,且if, for, do, while等语句的执行语句无论多少都要加括号{}。
if(writeToFile){
writeFileThread.interrupt();
}
- 相对独立的程序块之间、变量说明之后必须加空行。
{
代码块
}
变量
{
代码块
}
- 逗号、分号只在后面加空格。
int a, b, c;
比较操作符, 赋值操作符"="、 “+=”,算术操作符"+"、"%",逻辑操作符"&&"、"&",位域操作符"<<"、"^"等双目操作符的前后加空格。
if (current_time >= MAX_TIME_VALUE)
a = b + c;
"."前后不加空格。
p.id = pid;
注释
-
类和接口的注释写在包的下面,类和接口的上面
-
类属性、公有和保护方法注释:写在类属性、公有和保护方法上面。
-
成员变量注释内容:成员变量的意义、目的、功能,可能被用到的地方。
-
公有和保护方法注释内容:列出方法的一句话功能简述、功能详细描述、输入参数、输出参数、返回值、违例等。
/*** 〈一句话功能简述〉
* 〈功能详细描述〉
* * @param [参数1] [参数1说明]
* * @param [参数2] [参数2说明]
* * @return [返回类型说明]
* * @exception/throws [违例类型] [违例说明]
* * @see [类、类#方法、类#成员]
* * @deprecated
* */
- 注释与所描述内容进行同样的缩排。
将注释与其上面的代码用空行隔开。
public void example( ){
// 注释
CodeBlock One
// 注释
CodeBlock Two
}
命名规范
-
包名
包名采用域后缀倒置的加上自定义的包名,采用小写字母。 -
类名
类名和接口使用类意义完整的英文描述,每个英文单词的首字母使用大写、其余字母使用小写的大小写混合法。
OrderInformation,
CustomerList,
LogManager,
LogConfig
- 方法名
方法名使用类意义完整的英文描述:第一个单词的字母使用小写、剩余单词首字母大写其余字母小写的大小写混合法。
calculateRate
addNewOrder
- 变量名
属性名使用意义完整的英文描述
customerName
- 常量名
常量名使用全大写的英文描述,英文单词之间用下划线分隔开,并且使用 final static 修饰。
public final static int MAX_VALUE = 1000;
编码规范
1.明确方法功能,精确(而不是近似)地实现方法设计。一个函数仅完成一件功能,即使简单功能也应该编写方法实现。
说明:虽然为仅用一两行就可完成的功能去编方法好象没有必要,但用方法可使功能明确化,增加程序可读性,亦可方便维护、测试。
- 所有的数据类必须重载toString() 方法,返回该类有意义的内容。
- 数据库操作、IO操作等需要使用结束close()的对象必须在try -catch-finally 的finally中close()。
- 异常捕获后,如果不对该异常进行处理,则应该记录日志。说明:若有特殊原因必须用注释加以说明。
try{
//.... ...
}catch (IOException ioe){
Logger.error(ioe);
}
- 避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的静态变量来代替。
private final static int TRUNK_IDLE = 0;
private final static int TRUNK_BUSY = 1;
private final static int TRUNK_UNKNOWN = -1;
if (state == TRUNK_IDLE){
state = TRUNK_BUSY;
...
// program code
}
- 数组声明的时候使用 int[] index ,而不要使用 int index[] 。
- 调试代码的时候,不要使用 System.out 和 System.err 进行打印,应该使用Logger框架进行统一打印。说明:代码发布的时候可以统一关闭调试代码,定位问题的时候又可以打开开关。