Java编程规范

命名规范

  • 基本要求

命名要统一、达意且简洁。除了包名、静态常量等特殊情况,大部分情况下应用骆驼法则。

  • 常量

大写且下划线分割,如public static final String ORDER_PAID_EVENT=1。

  • 类名

首字母大写,后缀命名要统一,比如 SupplierService, PaymentOrderAction。

  • 方法名

首字母小写,动词在前,如 addOrder() 。

注解规范

  • 基本要求

注解内容要简单明了、含义准确,避免注释的多义性,更要避免错误的注释。

  • 必要注解

 类(接口)的用途、 构造函数的说明、方法的用途、全局变量的用途、算法的逻辑。

  • 格式说明

单行(single-line)注释:“//……”

块(block)注释:“/*……*/”

文档注释:“/**……*/”

  • JavaDoc的用法

类、方法的意义用法要以javadoc方式来注解,且凡是需要类使用者知道的都要用Java Doc 来注解。

javadoc 注释标签语法说明:

@author   对类的说明 标明开发该类模块的作者

@version   对类的说明 标明该类模块的版本

@see     对类、属性、方法的说明 参考转向,也就是相关主题

@param    对方法的说明 对方法中某参数的说明

@return   对方法的说明 对方法返回值的说明

@exception  对方法的说明 对方法可能抛出的异常进行说明

编码规范

  • 减少内存占用(两三例)

避免随意使用静态变量

当某个对象被定义为static变量所引用,那么gc通常是不会回收这个对象所占有的堆内存,此时静态变量的生命周期与A类相同,如果A类不被卸载,该静态对象会常驻内存,直到程序终止。

静态类、单例类、工厂类的构造函数应置为private

静态类、单例类、工厂类,这种类将构造函数置为private之后,保证了这些类不会产生实例对象。

慎用异常

异常对性能不利,抛出异常首先要创建一个新的对象,只要有异常被抛出,Java虚拟机就必须调整调用堆栈。

  • 避免内存泄漏(两三例)

公用集合类中的数据要及时remove掉

如果一个集合类是公用的,不是方法里面的属性,那么这个集合里面的元素是不会自动释放的,因为始终有引用指向它们,这个公用集合可能会不断增大,系统有内存泄露的隐患。

对资源的close()建议分开操作

能避免资源泄露,万一XXX.close()抛异常了,那么就进入了catch块中了,YYY.close()不会执行,YYY这块资源就不会回收了,一直占用着,这样的代码一多,是可能引起资源句柄泄露的。

  • 避免低效执行(若干例)

使用同步代码块替代同步方法

同步方法锁的范围比较大,而同步代码块范围相对要小,一般同步的范围越大,性能就越差,范围越小越好,这样性能更好。

程序运行中避免使用反射

反射是Java提供给用户一个很强大的功能,功能强大往往意味着效率不高。不建议在程序运行过程中使用尤其是频繁使用反射机制,特别是Method的invoke方法。如果确实有必要,建议将那些需要通过反射加载的类在项目启动的时候通过反射实例化出一个对象并放入内存。

带缓冲的输入输出流可提高IO效率

带缓冲的输入输出流,即BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream,这可以极大地提升IO效率。

把一个基本数据类型转为字符串

基本数据类型.toString()是最快的方式、String.valueOf(数据)次之、数据+”"最慢

频繁调用 Collection.contains 方法请使用 Set

List 的 contains 方法普遍时间复杂度是 O(n) ,如果在代码中需要频繁调用 contains 方法查找数据,可以先将 list 转换成 HashSet 实现,将 O(n) 的时间复杂度降为 O(1) 。

public方法应避免有过多的形参

Java讲求一切都是对象,太多的形参和面向对象的编程思想并不契合,参数太多势必导致方法调用的出错概率增加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值