第1章 引言
1.1介绍
本文档以SUN的标准Java代码规范为基础,结合公司的实际需要,做一些修改和补充,编写次文档的目的是规范公司开发代码,增加代码清晰度,减少bug,降低后期维护成本和代码审查,养成代码规范的习惯,便于开发人员自身成长。
第2章 标识符命名
注:所有标识符不能出现中文,尽量使用通俗英文,不可拼音和英文混用。
2.1 包名
全部使用小写字母,单词间不要用字符隔开
正例:com.axj.batchfile
反例:com.axj.batch_file
2.2 类名
2.2.1 类命名
类名使用驼峰命名,每个自然语义的单词首字母大写,其他字母小写
正例:SendThread
反例:sendThread,Sendthread
2.2.2 类后缀
类名不同的后缀代表不同的类型:
2.2.22.3方法名
首字母小写,后面自然语义的单词首字母都大写
正例:closeSession
反例:CloseSession,closesession
动词在前,名词在后
正例:closeSession
反例:sessionClose
方法命名格式(方法名要准确表达业务的含义):
2.32.4 变量、参数名
变量一定要清楚表达什么意思,一般取一些通俗有意义的名字,尽量使用简短英文单词。
命名规则:
1、首字母小写,后面自然语义的单词首字母都大写
2、只能以字母、“_”或“$”符号作为变量名开头。
3、变量中可包含数字,但不能以数字开头。
4、除了“_”和“$”符号以外,变量中不能包含其他特殊字符。
5、不能用class、int、String、public等java关键字做为变量名。
6、在java中变量名严格区分大小写,例如:name和Name就是两个不同的变量
7、静态变量和枚举类型字母全大写,多个单词之间用”_”分隔,如:TIME_EVENT
第3章代码注释
3.1 注释分类
注:注释主要分为2种,实现注释和文档注释。
3.1.1 实现注释
实现注释使用/*...*/和//界定,使用/*...*/来进行块注释,使用//进行行注释,位于注释代码上一行。
3.1.2文档注释
文档注释描述Java的类、接口、构造器,方法,以及字段(field)。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前,javadoc是j2sdk里面一个非常重要的工具,如果你按照规范在Java的源代码里面写好注释的话,那么它就可以生成相应的文档,便于开发者察看,Myeclipse生成步骤,点击菜单栏的Project,选择generate javadoc,下一步即可。
javadoc参数定义:
@author 对类的说明 标明开发该类模块的作者
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
@exception 对方法的说明 对方法可能抛出的异常进行说明
3.2 注释条件(必加)
1、类的注释
2、方法的注释
3、在代码复杂处注释
4、代码修改处注释上时间和修改原因
5、全局变量注释
6、在多重嵌套和循环逻辑上注释
7、接口注释
8、调用工具类中方法的注释
3.3 注释举例
3.3.1 类注释
/**
*类功能概述×××××××
*
*@author huwei
*@time 2017-8-20
*/
public class LogicManager {
......
}
3.3.2 方法注释
/**
* 方法说明×××××××
*
* @param1 参数说明
* @param2 参数说明
* @return 返回值说明
* @throws Exception
*/
public boolean executeLogic(int param1, int param2)throws Exception{
......
return true;
}
3.3.3 全局变量、字段、属性注释
public class ReadManager {
/** 全局的计数变量*/
private final int count;
/** 字段/属性*/
private String name;
}
3.3.4 代码域注释
/*----------开始:解析数据库数据 ------- */
//\1拆分数据库数据
String Row[] = sStr.split("\1");
waitRecord = new WaitRecord[Row.length];
/* 循环存储对象到List */
for (int i = 0; i < Row.length; i++) {
String Col[] = Row[i].split("\2");
waitRecord[i] = new WaitRecord();
waitRecord[i].waitId = Col[0];
waitRecord[i].userId = Col[1];
waitRecord[i].username = Col[2];
waitRecord[i].longId = Col[3];
waitList.add(waitRecord[i]);
}
/*----------结束:解析数据库数据 ------- */
第五章代码习惯
5.1 异常抛出
进程和线程可能出现一系列异常,异常的出现如果没有抛出可能会导致进程死掉或线程崩溃,所以需养成异常捕获抛出的习惯,避免应用因进程卡住,异常异常捕获后,需打印异常日志,否则出现异常时不好查找问题。
5.2 减少嵌套
代码嵌套层太多,会严重影响代码可读性,处理方法:
1、使用return跳出,减少else使用
2、条件使用逻辑运算符(&& 或 ||等)进行拼接
3、整合成子方法
5.3 判断字符串相等
1、java中字符串的比较是==比较引用,equals 比较值
我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题
例子1:String a="abc";String b="abc",
那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存
一份,所以a和b指向的是同一个对象;
例子2:String a=new String("abc"); String b=new String("abc");
那么a==b将返回false,此时a和b指向不同的对象。
2、用equals方法比较的是字符串的内容是否相同
example:String a=new String("abc"); String b=new String("abc"); a.equals(b);将返回true。
通常情况下,为了避免出现上述问题,判断字符串是否相等使用equals方法,具体的原因得引出常量池概念,这里不做详细描述
5.4 字符串拼接
拼接字符串尽量使用StringBuffer或者StringBuilder,使用”+”号每次会new一个对象,对空间和性能还是有一定影响的。
5.5 NPE处理
在java开发最常见的异常就是NPE(java.lang.NullPointerException)异常,需有效的规避异常,进行null判断,可能出现null模块,取集合元素,数据截取,方法返回,socket传输的数据,数据库取值等等...
5.6 日志输出
平时调试代码或输出日志习惯使用System.out.println(),system.out都写入到一个文件里去了,对一个文件的读写就会排队写,而且syso在当前线程,必须写完才继续下面的程序。 如果使用log工具,你的日志会发散在多个日志文件上。可以控制日志是否输出,而且log工具只是通知要写日志,而不必等日志写完。
————————————————
原文链接:https://blog.csdn.net/u013050593/java/article/details/77750807
网友评论