初入职场采用Java编程需养成的编码习惯

对于职场新人,其编码习惯往往比较随意,所写出来的代码可读性实在是难以恭维,今天Manager对我所写的代码进行了一次漫长的Code Reviewer,发现了非常多的问题,先总结如下,也好勉励自己,慢慢码畜路上也能写出优秀的代码。

 

1. 注释、注释、注释

    我想这是中国式程序员常见的问题吧,大都很少写注释,不过对于在公司需要实际运行、或者上线的代码,写注释就非常有必要了,结合中国式国情,至少能够保证:每个类有功能及作者信息(一是能够发现每个类的功能是否单一问题,二是出现问题也能快速追踪),复杂函数需要有注释

 

2. 关于函数返回值

    在Java代码中,通常有两种结束函数的方式,一种是return语句,另一种是抛出异常,一种较好的设计方法是使用return返回正确的结果,通过抛出异常返回错误的结果。上层代码可以通过异常发现底层代码的错误,并做相应的处理。

 

3. 关于日志

    通常情况下,非最顶层代码不要抛出大于debug级别的日志,所有的日志应该由顶层代码完成,如实现一个SDK,是不应该打日志的(至少不应该有大于debug级别的日志),因为SDK是提供给其它程序调用的。在抛出大于debug级别的日志时,可以先判断日志级别在打日志,这样可以提高程序运行时的效率。示例如下:

if (logger.isEnabledFor(Level.FATAL)) { 

    forcedLog(logger, Level.FATAL, message);  

}

 

4. 关于异常

    一直觉得Java异常是一件非常烦人的事情,但Java异常机制的设计却是非常优秀的,前面提到,可以使用抛出异常使得函数出现错误时返回,然后上层代码通过不同的异常决定下一步应该怎么进行。总的来说,异常的使用应该合理,当前层次能够处理的就处理,无法处理的就抛给上层,不要简单的通过Exception将所有的异常都拦截下来,或者简单的调用ex.printStackTrace()打印错误堆栈,对于正式项目来说,ex.printStackTrace()是不允许出现在代码中的,在出现异常的地方,应该记录日志,或者抛出新的异常。

 

5. finally关键字的使用

    对于释放资源相关的操作,如conn.close()等操作需要放在finally里面完成,如果不是,当close()前面的代码出现异常,可能根本就执行不到close()方法,这样可能导致连接其实没有关闭,从而影响JVM对无效对象的回收,从而造成对内存的浪费。

 

6. 关于数据库

    首先应该确认项目是否需要事务操作。如果需要使用到事务,应该设置

conn.setAutoCommit(false),从而关闭自动提交SQL语句,然后按照事务指定的方式提交SQL语句。其次对于SQL语句,不要出现“*”这样的关键字,应该明确指定应该使用的字段,即使是所有字段都需要使用。如selct *以及select count(*)这样的方式就非常不好,可以使用count(primary_key)代替count(*)。

 

7. 类中成员变量声明是均明确初始化。

8. 对每一个函数的参数值做合法性验证。

9. 对每一个实体类实现hashCode()和toString()方法。

10. 开发之前设定整个项目环境的编码,如UTF-8就是一个非常好的选择。

 

2012.9.12添加

单个方法应避免多个返回点

尽量简化if-else的编写,多个if语句能够合成的尽量合成为一个if语句

方法的参数能够使用final的尽量加上final标识


总的来说就是要:减少写代码的随意性,提高代码的可控性。

暂时就这么多了,如您有更好的习惯,请您一定要分享给我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值