Java开发不可忽视的小细节(不断总结中...)
2017-12-04 17:30
204 查看
笔者一直强调,作为程序员,的基本素养有两点:
一是专业,即:对代码匠艺精神保持敬畏之心
二是CC,即:任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员
作为一个使用Java语言的程序员,想要做到专业,代码匠艺精神和整洁代码风格,至少我认为,除了CC基本原则外,还是需要做到以下细节,或者编码规范的。
以下内容来自工作中的总结,详见JDK说明或源码,不足之处请指正。
2、另外,System.nanoTime()返回的是纳秒,nanoTime而返回的可能是任意时间,甚至可能是负数。所以其主要的用途是衡量一个时间段,比如说一段代码执行所 用的时间,获取数据库连接所用的时间,网络访问所用的时间等
2、Arrays.asList(T... a) 方法时,返回一个受指定数组支持的固定大小的列表。不支持对List的add操作。
3、Array.newInstance()方法时,
Class domainClazz = Class.forName( domainClassName );
Class clazz = Array.newInstance( domainClazz, 0 ).getClass();
2、如果状态测试方法(hasNext)和相应的调用方法(next)使用的是相同的代码,出于性能上的考虑,没有必要重复两次相同的工作,此时应该选择返回可识别的错误返回值的方式。
3、对于其他情形则应该尽可能考虑"状态测试"的设计方式,因为它可以带来更好的可读性。
2、finally语句先于return语句执行,而不论其先后位置,也不管是否try块出现异常。finally语句唯一不被执行的情况是方法执行了System.exit()方法。System.exit()的作用是终止当前正在运行的Java虚拟机。
3、finally语句块中不能通过给变量赋新值来改变return的返回值,也建议不要在finally块中使用return语句,没有意义还容易导致错误。
一是专业,即:对代码匠艺精神保持敬畏之心
二是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语句,没有意义还容易导致错误。
相关文章推荐
- java开发过程中总结的细节经验
- JavaWeb开发回顾总结【不断更新中】
- 个人忽视的Java开发细节
- JAVA开发错误总结(仅记录遇到的错误---后续不断更新......)
- javaWeb开发过程中小细节总结(1)
- java代码开发细节(根据Sonar提示的问题总结归纳的)
- javaWeb开发过程中小细节总结(2)
- 基于java技术的软件开发架构总结
- WEB开发:WEB开发中的JAVA字符编码经验总结
- Java Web开发、插件开发、EclipseRCP中相对路径/绝对路径总结
- WEB开发中的JAVA字符编码经验总结
- 基于java技术的软件开发架构总结
- WEB开发中的JAVA字符编码经验总结
- 基于java技术的软件开发架构总结
- 基于java技术的软件开发架构总结
- 基于java技术的软件开发架构总结
- 关于一些Java开发工具的使用心得(不断更新)
- 原创:关于一些Java开发工具的使用心得(不断更新)
- java在web开发安全性方面的总结
- 总结java开发web service的方法