您的位置:首页 > 编程语言 > Java开发

Java开发不可忽视的小细节(不断总结中...)

2017-12-04 17:30 204 查看
笔者一直强调,作为程序员,的基本素养有两点:
一是专业,即:对代码匠艺精神保持敬畏之心
二是CC,即:任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员

作为一个使用Java语言的程序员,想要做到专业,代码匠艺精神和整洁代码风格,至少我认为,除了CC基本原则外,还是需要做到以下细节,或者编码规范的。

以下内容来自工作中的总结,详见JDK说明或源码,不足之处请指正。

【细节1】获取当前时间毫秒用System.currentTimeMillis() 而不是new Date()

1、获取时间毫秒数时System.currentTimeMillis()方法比new Date().getTime()效率高,因为new Date().getTime()方法调用的System.currentTimeMillis()

2、另外,System.nanoTime()返回的是纳秒,nanoTime而返回的可能是任意时间,甚至可能是负数。所以其主要的用途是衡量一个时间段,比如说一段代码执行所 用的时间,获取数据库连接所用的时间,网络访问所用的时间等

public Date()
{
this(System.currentTimeMillis());
}


【细节2】Arrays

1、Arrays.binarySearch(xxxxx)方法时,需要保证数组是按升序进行排序的。所以使用前,请务必先Arrays.sort(xxxxx);

2、Arrays.asList(T... a) 方法时,返回一个受指定数组支持的固定大小的列表。不支持对List的add操作。

3、Array.newInstance()方法时,
Class domainClazz = Class.forName( domainClassName );
                    Class clazz = Array.newInstance( domainClazz, 0 ).getClass();

【细节3】状态测试方法(hasNext)和相应的调用方法(next)使用

1、如果是缺少同步的并发访问,或者可被外界改变状态,使用可识别返回值的方法是非常必要的,因为在测试状态(hasNext)和对应的调用(next)之间存在一个时间窗口,在该窗口中,对象可能会发生状态的变化。因此,在该种情况下应选择返回可识别的错误返回值的方式。

2、如果状态测试方法(hasNext)和相应的调用方法(next)使用的是相同的代码,出于性能上的考虑,没有必要重复两次相同的工作,此时应该选择返回可识别的错误返回值的方式。

3、对于其他情形则应该尽可能考虑"状态测试"的设计方式,因为它可以带来更好的可读性。

【细节4】finally

1、finally语句在任何情况下都必须执行的代码,这样可以保证一些在任何情况下都必须执行代码的可靠性。比如,在数据库查询异常的时候,应该释放JDBC连接等等。

2、finally语句先于return语句执行,而不论其先后位置,也不管是否try块出现异常。finally语句唯一不被执行的情况是方法执行了System.exit()方法。System.exit()的作用是终止当前正在运行的Java虚拟机。

3、finally语句块中不能通过给变量赋新值来改变return的返回值,也建议不要在finally块中使用return语句,没有意义还容易导致错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: