java开发注意事项培训.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
不当代码 代码格式问题: 1)空行是否得体? 2)代码行内的空格是否得体? 3)注释是否清晰并且必要? 4)长行拆分是否得体? 5)If、for、while、do等语句自占一行,不论执行语句多少都要加“{}”。 6)标识符的长度应当符合“min-length max-information”原则? 7)是否编写太复杂或者多用途的复合表达式? 8)Case语句的结尾是否忘了加break? 9)构造函数中是否遗漏了某些初始化工作? 不当代码 是否违背了继承和组合的规则? (1)若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。 (2)若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。 不当代码 变量值问题: (1)变量的初始化或缺省值有错误吗? (2)变量发生上溢或下溢吗? (3)变量的精度够吗? 逻辑判断问题: (1)由于精度原因导致比较无效吗? (2)表达式中的优先级有误吗? (3)逻辑判断结果颠倒吗? 循环问题: (1)循环终止条件不正确吗? (2)无法正常终止(死循环)吗? (3)错误地修改循环变量吗? (4)存在误差累积吗? 不当代码 Exception处理问题: (1)忘记进行错误处理吗? (2)错误处理程序块一直没有机会被运行? (3)错误处理程序块本身就有毛病吗?如报告的错误与实际错误不一致,处理方式不正确等等。 (4)错误处理程序块是“马后炮”吗?如在被它被调用之前软件已经出错。 文件I/O问题: (1)对不存在的或者错误的文件进行操作吗? (2)文件以不正确的方式打开吗? (3)文件结束判断不正确吗? (4)没有正确地关闭文件吗? 不当代码 内存和资源操作问题: 1)是否一次申请了太大的内存,例如一次性将大型文件读出而不是进行流式处理 2)是否向全局集合变量(例如会话数据,Map表)添加数据,而忘记移除 3)是否长期持有大型对象的引用 4)建立tcp连接,而不进行关闭 5)使用JDBC访问数据库,忘记关闭statment 6)自己使用JDBC连接,而不是使用系统的连接池 7) 创建过多的线程,或者线程式的定时器,例如jdk自带的定时器。 跨平台问题: 1)是否将代码限制在某个操作系统,例如定义的路径格式为windows系统 2)调用某个特定的操作系统的命令或程序,导致在其他操作系统上功能失效 常见不当代码 多次拷贝字符串 生成不可变(immutable)对象的多份拷贝。不可变对象是不可改变的,因此不需要拷贝它。最常用的不可变对象是String。 如果你必须改变一个String对象的内容,你应该使用StringBuffer。 常见不当代码 没有克隆(clone)返回的对象 不必要的克隆 自编代码来拷贝数组 拷贝错误的数据 有时候程序员知道必须返回一个拷贝,但是却不小心拷贝了错误的数据。由于仅仅做了部分的数据拷贝工作,代码与程序员的意图有偏差 检查new 操作的结果是否为null 常见不当代码 用== 替代.equals 混淆原子操作和非原子操作。 Java保证读和写32位数或者更小的值是原子操作,也就是说可以在一步完成,因而不可能被打断,因此这样的读和写不需要同步。不过,这个保证仅限于读和写 (get,set) 在catch 块中作清除工作 .代码仅仅处理了Exception,而没有涉及到Error。当try块运行出现了Error,流也应该被关闭 常见不当代码 增加不必要的catch 块.增加不必要的catch块的代码:捕获到的异常又立即被抛出 没有正确实现equals,hashCode,或者clone 等方法 。方法equals,hashCode,和clone 由java.lang.Object提供的缺省实现是正确的。不幸地是,这些缺省实现在大部分时候毫无用处,因此许多类覆盖其中的若干个方法以提供更有用的功能。但是,问题又来了,当继承一个覆盖了若干个这些方法的父类的时候,子类通常也需要覆盖这些方法。在进行代码审查时,应该确保如果父类实现了equals,hashCode,或者clone等方法,那么子类也必须正确。正确的实现equals,hashCode,和clone需要一些技巧。 Java内存泄露 内存的泄漏指的是内存的一块区域一直没有被释放,当这样的区域越来越多时,系统就会崩溃。 尽管java虚拟机和垃圾回收机制管理着大部分的内存事务,但是在java软件中还是可能存在内存泄漏的情况。的确,在大型工程中,内存泄漏是一个普遍问题。最常见的折磨着企业级应用程序的错误之一是让人恐惧的outofmemoryError(内存溢出错误)

您可能关注的文档

文档评论(0)

yan666888 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档