Java基础学习总结(93)——Java编码规范之代码性能及惯例

原创 2017年01月03日 09:56:43

1、避免使用包装类构造函数

按照SUN公司的说明,使用自动装箱或静态工厂方法比使用new一个对象快3到4倍,该规则可以用在valueOf或其它静态工厂的调用中(如:Short、Integer, Long、Double, Byte 、Boolean等)。

JAVA编码规范之代码性能及惯例

推荐用valueOf()

2、面向接口编程时,推荐使用接口的声明方式

JAVA编码规范之代码性能及惯例

推荐使用接口声明方式

3、单个方法代码行数尽量保持在80-100行之内

4、数据库及磁盘IO等操作,必须在try-catch-finally块的finally中执行close()方法

如有多个对象需要关闭,则须分别对每个对象的close()方法进行try-catch,以防止出现一个对象关闭失败而导致其他对象都未关闭的情况出现

5、不要在循环体内进行数据库的“连接-关闭”操作

如有大批量的数据需要修改,建议使用PreparedStatement的Batch功能(一次性发送多个操作给数据库)

6、大量(如超过五次以上的“+=”运算)的字符串操作应使用StringBuilder或StringBuffer,尽量避免使用String

7、不要在循环条件中使用表达式

JAVA编码规范之代码性能及惯例

循环条件中避免使用表达式

8、应尽可能的以指明容量大小的方式对ArrayList进行实例化

  • public ArrayList();

    默认的构造器,JAVA以10个元素的大小初始化

  • public ArrayList(int);

    用指定的容量大小大小初始化

不指明容量大小时,如集合容量不够,则JAVA会以1.5倍的容量递增扩充,而且每次扩充,系统会重新拷贝一遍已经加入到ArrayList的数据,从而导致额外的内存开销。

9、集合中的数据如果不使用了应该及时释放

由于集合保存了对象的引用,虚拟机的垃圾收集器就不会回收

10、不要在循环体内声明变量

尽量避免在循环体内声明变量,因为每一个引用占4个字节。这样可以极大的减少新对象的创建数量,从而很大限度的减小内存开销。

JAVA编码规范之代码性能及惯例

不要在循环体内声明变量

11、非正常运行产生的异常被捕获后,必须对异常进行处理

在非finally块代码中catch的异常应该重新抛出经过封装的异常,在finally中再次catch的异常不应该再次抛出,应该写日志。无论是抛出异常还是记录日志,都要传递异常对象。日志应记录详细的描述信息,避免调用异常对象的getMessage()方法,直接将该异常对象作为参数传递。

12、尽量定位异常类型,不要一律catch(Exception ex)

当需要在某些出口捕获所有可能出现的运行时异常或Error时,可以catch Exception 或Throwable。

13、尽量避免一个方法中一个大的try块,catch一个Exception的代码方式,如果有必要可以使用多个try-catch块分别处理

14、不要将赋值运算符用在容易与相等关系运算符混淆的地方,如:

JAVA编码规范之代码性能及惯例

可读性很重要

类似的道理,我们可将“if (a == b && c == d)”改为可读性更强的“if ((a == b) && (c == d)) ”,可将“x >= 0 ? x : -x;"改为”(x >= 0) ? x : -x;“

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JAVA_SE基础——编码规范&代码编写规则

这次我来给大家说明下编码规范&代码编写规则  ↓ 编码规范可以帮助程序员在编程时注意一些细节问题,提高程序的可读性,让程序员能够尽快地理解新的代码,并帮助大家编写出规范的利于维护的Java代码。 ...

Java性能 优缺点 和 编码技巧 ——不一定始终对,VM的设计是关键。

java的GUI程序基本上是性能不要太差,虚拟机太大太慢。服务器端,java较为便利。 原因1:虚拟机一直在执行,那么避免重复启动关闭浪费时间。启动一次就好了。原因2:服务器内存足够大,这个ja...

《Google Java编程风格指南》代码注释与编码规范~总结

一:术语 1、术语class可表示一个普通类,枚举类,接口或是annotation类型(@interface)。 2、术语comment只用来指代实现的注释(implementation comm...

黑马程序员java基础学习日记——做题遇到GBK查资料发现了个有趣的文章——ASCII、Unicode、GBK和UTF-8字符编码的区别联系

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万...

asm基础——堆栈框架、调用惯例

asm基础——堆栈框架、调用惯例

java我的总结——一些基础知识和代码

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------  static关键字:用于修饰成员(成员变量和成员函数) 被static修饰后的...

JAVA多线程基础实验编码及学习笔记总结

关于多线程的基础知识和相关概念,以及编程时可能会出现的问题参见我之前的两个博客 Java多线程和操作系统多线程关系 操作系统中进程和线程的概念理解 多线程基础实验 import Threads...

java性能编码规范整理二

12、对于高频度使用的对象,需要进行单独优化处理给以重用 13、在代码开发中,需要根据应用场景合理选择集合框架中的集合类,应用场景可按单线程和多线程来划分,也可按频繁插入、随机提取等具体操作场景来划...
  • txplp
  • txplp
  • 2012-07-05 00:46
  • 267

java性能编码规范整理二

接上篇  java性能编码规范整理一 12、对于高频度使用的对象,需要进行单独优化处理给以重用13、在代码开发中,需要根据应用场景合理选择集合框架中的集合类,应用场景可按单线程和多线程来划分,也可按频...

黑马程序员——Java基础---IO(二)---对象流、管道流、RandomAccessFile、数据流、数组流、字符编码

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 学习笔记——IO流——对象流、管道流、RandomAccessFile、数据流、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)