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];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客