Java编程规范整理
编程技术  /  houtizong 发布于 3年前   121
一、排版
1. 代码采用缩进风格编写,缩进空格数为4,不允许使用Tab缩进(空格缩进可适应不同操作系统和开发工具),采用Ctrl+Shift+F进行格式化。(Eclipse设置空格缩进方法:Window->Preferences->Java->Code Style->Formatter->New->选择Spaces Only->OK)
2. 较长的语句,表达式或或参数(>80字符)要分行书写,表达式需在低优先级处划分新行,操作符放在行首。
3. 一行只书写一条语句。
4. if,for等语句组必须加大括号,case的执行语句组定义变量必须加大括号。
5. 相对独立的程序块之间、变量说明之后必须加空行。
6. 两个以上的关键字、变量、常量之间操作符两边都应加上空格,双目操作符的前后加空格,单目操作符前后不加空格。
7. 类属性和类方法不要交叉放置。
8. 修饰符按指定顺序书写 [访问权限][static] [final]。
二、注释
1. 包注释(写一个名为package.html的文件放入包所在路径,内容有包的作用、详细描述、本包的内容、模块名称和版本、公司版权)。
<html>
<body>
<p>一句话简述</p>
<p>详细描述</p>
<br>公司的版权信息
</body>
</html>
2. 源文件注释
源文件注释采用/** …… */文档注释,在每个源文件的头部要有必要的注释信息,包括:文件名、文件编号、版本号、作者、创建时间、文件描述包括本文件历史修改记录等。
/**
* 文件名 :
* CopyRright (c) 2014-xxxx:
* 文件编号:
* 创建人:
* 日期:
* 修改人:
* 日期:
* 描述:
* 版本号:
*/
3. 类、模块和接口注释
类、模块和接口注释也采用 /** …… */文档注释,在每个类、模块或接口头部都要有必要的注释信息,包括:工程名;类、模块或接口编号;命名空间;类可以运行的JDK版本;版本号;作者;创建时间;类、模块或接口功能描述(如功能、主要算法、内部各部分之间的关系、该类与其类的关系等,必要时还要有一些如特别的软硬件要求等说明);主要函数或过程清单及本类(模块)历史修改记录等。
/**
* 一句话功能简述
* 功能详细描述
* @author
* @version
* @see [相关类方法]
*/
3. 类属性注释
/**
* 注释内容
*/
4. 类方法注释
/**
* 一句话功能简述
* 功能详细描述
* @param [参数1 参数1说明]
* @param [参数2 参数2说明]
* @return
* @throws [非Runtime异常类型,类型说明]
* @exception[Runtime异常类型,类型说明]
* @see [类方法相关说明]
* @since [方法的起始版本]
* @deprecated [不建议使用该方法]
*/
5. 代码注释(//),放在代码的上方,并与其上面的代码用空行隔开
6. 修改代码同时修改相应的注释
7. 避免在注释中使用缩写
8. 关键变量的定义和分支语句必须编写注释
9. 一些复杂的代码需要说明
三、命名
1. 类名和接口名,每个单词首字母大写
2. 方法名,第一个单词的首字母小写,后面的大写
3. 属性名, 第一个单词的首字母小写,后面的大写
4. 常量名,常量名使用全大写的英文描述,单词之间用下划线连接
5. 包名,全部用小写
6. 组件类的命名,组件名+组件类型缩写
四、编码
异常类:
1. 数据库操作、IO操作等要在finally中按顺序close,并且每个close都要分别try-catch,防止某个关闭失败时其它也跟着失败
2. 对方法的调用要进行空指针判断避免造成空指针异常
3. 系统非正常运行产生的异常捕获后,如果不对异常处理,则应该记录日志
4. 自己抛出的异常必须填写详细的描述信息(thrownew IOException(“error,Data:”+data))
5. 运行时异常使用RuntimeException的子类表示,不用在可能抛出的方法声明上加上throws子句,非运行时异常是从Exception继承而来,必须在方法声明上加throws子句
6. 异常和错误码不应该混合使用,由程序结构确定,推荐使用异常
7. 记录异常不要保存exception.getMessage(),而要记录exeception.toString()。因为某些异常抛出时常常描述为空
8. 异常捕获不应直接用Exception,应把异常细分
9. 应明确规定接口方法参数的合法性检查应由方法的调用者(默认)还是方法本身
10. 字符串转化为数字时要做异常处理
数据类:
1. 用括号明确表达式的优先级,避免使用默认优先级
2. 避免使用不易理解的数字,用有意义的标识来替代,涉及物理状态等的常量使用有意义的静态变量或枚举
3. 数据声明的时候使用 类型[] 变量名;
4. 集合必须指定模板类型
5. 所有的数据类必须覆写toString(),hashCode(),equals()。父类如果实现了比较合理的toString(),子类可以继承不必再重写。HashCode和equals可以使用eclipse自动生成
6. 一定要对数组下标作范围校验
7. equals操作时将常量放在equals操作符的左边,避免空指针异常
业务类:
1. 测试完应删除System.out,System.err语句,应使用工具类记录日志
2. 一个文件只定义一个类(除内部类)
3. 判断语句不要使用“x=true”,直接if(x){}
4. 尽量使用新循环 for(Stringstr:list)
5. 新起一个线程,都要使用Thread.setName(“..”)设置线程名,以便监控
6. 循环体内不要包含了大量没有必要在循环中处理的语句,编程规范中建议“不要在循环体内调用同步方法和使用 try-catch块”
性能与可靠性:
1. 对Debug,Info级别的日志输出前必须对当前的调试等级进行判断,if(logger.debugEnable()){logger.debug(“…”)}
2. 数据复制使用System.arraycopy(*)
3. 不要使用循环将集合转为数组,可用toArray(array)方法
4.大量字符串相加应使用StringBuilder(高性能,不涉及线程安全)和StringBuffer(线程安全)
5. 对日志工具对象logger应申明static,防止重复new出logger对象
6. 实现serializable接口可序列化类应该显式声明serialVersionUID,因为生成默认ID可能会因为编译器的不同而不同,在反序列的过程中可能出现意外的异常
public calssHello implements Serializable{
private static final long serialVersion = -253243248L;
}
7. public类型的底层函数需对输入参数进行判断,参数不合法应主动抛出RuntimeException
If(b==0){thrownew IllegalArgumentException(“b不能为0”);}
8. 尽量使用API自带的函数,不要写类似功能的函数
9. IO流使用有Buffer功能的class提高效率
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接