Java语言编程规范

来源:互联网 发布:通达信软件电脑版 编辑:程序博客网 时间:2024/05/01 19:17

一、排版

1. 代码采用缩进风格编写,缩进空格数为4,不允许使用Tab缩进(空格缩进可适应不同操作系统和开发工具),采用Ctrl+Shift+F进行格式化

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. 类和接口注释

       /**

          * 一句话功能简述

          * 功能详细描述

          * @author

          * @see [相关类方法]

          *@since [产品、模块版本]

          * @deprecated [不建议使用该方法]

          */

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. 自己抛出的异常必须填写详细的描述信息(thrownew IOException(“error,Data:”+data))

4. 运行时异常使用RuntimeException的子类表示,不用在可能抛出的方法声明上加上throws子句,非运行时异常是从Exception继承而来,必须在方法声明上加throws子句

5. 异常和错误码不应该混合使用,由程序结构确定,推荐使用异常

6. 用括号明确表达式的优先级,避免使用默认优先级

7. 避免使用不易理解的数字,用有意义的标识来替代,涉及物理状态等的常量使用有意义的静态变量或枚举

8. 数据声明的时候使用 类型[] 变量名;

9. 测试完应删除System.out,System.err语句,应使用工具类记录日志

10. 集合必须指定模板类型

11. 一个文件只定义一个类(除内部类)

12. 所有的数据类必须覆写toString(),hashCode(),equals()。父类如果实现了比较合理的toString(),子类可以继承不必再重写。HashCode和equals可以使用eclipse自动生成

13. 判断语句不要使用“x=true”,直接if(x){}

14. 不要写没有必要的强制转换

15. 记录异常不要保存exception.getMessage(),而要记录exeception.toString()。因为某些异常抛出时常常描述为空

16. 异常捕获不应直接用Exception,应把异常细分

17. 应明确规定接口方法参数的合法性检查应由方法的调用者(默认)还是方法本身

18. 尽量使用新循环 for(Stringstr:list)

19. 新起一个线程,都要使用Thread.setName(“..”)设置线程名,以便监控

五、性能与可靠性

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提高效率