2027766963 发表于 2017-6-6 14:54:10

Java编程中哪些问题最容易忘记?

  在写代码的过程中,我们很容易忽略一些问题,针对这些问题动宝儿汇总了以下几点,希望可以帮助到大家:

  纠结的同名

  现象

  很多类的命名相同(例如:常见于异常、常量、日志等类),导致在import时,有时候张冠李戴,这种错误有时候很隐蔽。因为往往同名的类功能也类似,所以IDE不会提示warn。

  解决

  写完代码时,扫视下import部分,看看有没有不熟悉的。替换成正确导入后,要注意下注释是否也作相应修改。

  启示

  命名尽量避开重复名,特别要避开与JDK中的类重名,否则容易导入错,同时存在大量重名类,在查找时,也需要更多的辨别时间。

  日志跑哪了?

  现象

  有时候觉得log都打了,怎么找不到?

  示例一:没有stack?trace!

  }?catch?(Exception ex) {?log.error <http://www.yidianzixun.com/home?page=channel&keyword=error>(ex); }

  示例二:找不到log!

  }?catch?(ConfigurationException e)?{ e.printStackTrace; }

  解决

  1.替换成log.error(ex.getMessage,ex);

  2.换成普通的log4j吧,而不是System.out。

  启示

  1.API定义应该避免让人犯错,如果多加个重载的log.error(Exception)自然没有错误发生

  2.在产品代码中,使用的一些方法要考虑是否有效,使用e.printStackTrace要想下终端(Console)在哪。

  忽视日志记录时机、级别

  现象

  存在下面两则示例:

  示例一:该不该记录日志?

  catch?(SocketException e) { LOG.error("server?error", e);?thrownewConnectionException(e.getMessage, e); }

  示例二:记什么级别日志?

  在用户登录系统中,每次失败登录:

  LOG.warn("Failed to?login?by "+username+");

  解决

  1.移除日志记录:在遇到需要re-throw的异常时,如果每个人都按照先记录后throw的方式去处理,那么对一个错误会记录太多的日志,所以不推荐如此做;但是如果re-throw出去的exception没有带完整的trace( 即cause),那么最好还是记录下。

  2.如果恶意登录,那系统内部会出现太多WARN,从而让管理员误以为是代码错误。可以反馈用户以错误,但是不要记录用户错误的行为,除非想达到控制的目的。

  启示

  日志改不改记?记成什么级别?如何记?这些都是问题,一定要根据具体情况,需要考虑:

  在Java编程中,除了上面枚举的一些容易忽视的问题,日常实践中还存在很多。相信在不断的实践中自己就可以发现并改正。

  想要知道更多相关内容关注“动力节点Java学院”微信公众号获取,想加入Java开发行业,现在动力节点Java远程基础班免费赠送学习名额,对于想学习Java编程的同学无疑是好消息,机会就在眼前,快来报名吧,名额有限,先到先得。

页: [1]
查看完整版本: Java编程中哪些问题最容易忘记?