快速业务通道

八个改善Java遗留系统的技巧 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
作为cache,你就可以通过JMX来暴露功能,从而很容易地清除那个cache。

一旦应用通过JMX暴露,运维团队或者开发者就可以以良好的方式来操作应用,无需直接访问运行着应用的机器。

技巧5:创建单元测试

一旦你对遗留系统的修改破坏了某个功能,你所面临的最大障碍之一就来到了。一些工具宣称能对代码进行反向工程,并为其创建单元测试,但我对这些工具没有太多的信心。要想有足够的信心,你的单元测试的确覆盖了你期望它们覆盖的代码,你就不得不亲自创建它们。

很幸运,为遗留代码创建单元测试并没有一开始感觉上的那样困难。我使用了Michale Feathers在Wo***ng Effectively with Legacy Code一书中讲解的“遗留代码修改算法”:

确认修改点

找出测试点

打破依赖

编写测试

修改并重构

有效使用这个算法的窍门在于第3点:打破依赖。有很多技术可以用来干这个,但其中大多数都是关于移除静态引用以及在接口和facade下隐藏外部引用和复杂代码。一旦你具有这样打破依赖的感觉了,接触遗留代码就不会是一件让你提心吊胆的事情了。

八个改善Java遗留系统的技巧(2)

时间:2010-11-03 infoq 译:张凯峰

技巧6:杀死无用代码

虽然无用代码可能看起来无害,但它们实际上往往会是无声的杀手。原因在于只要无用代码还在代码库中,负责维护的程序员就不会非常确信,代码是真的无用还是只是看起来无用。感受过前几次修改所带来的痛苦的维护者都知道,即使是静态代码分析也不能证明代码是真的无用了。比如,十年前一些聪明的程序员可能会通过数据库中的字符串值来驱动Java reflection调用业务逻辑(别笑,我不止一次看到过这样)。

因此,杀死无用代码应用是第一优先级的任务。虽然Emma通常被认为是一种单元测试覆盖工具,但它可以用来侦测无用代码。当你把Emma注入到JVM中,它就可以追踪到哪些代码执行了,哪些没有。在你的开发环境中,把Emma和一个完整的测试周期相结合使用,你就会知道哪些代码活着还是死了。

技巧7:采用一种“顺从”方式构建代码

遗留应用不可能一次清理完毕。在现实中,开发团队必须利用任何一次机会,来改善遗留代码。但许多团队对目前代码的情况都倍感失望,而无法考虑他们究竟该怎么做。“代码实在太糟糕了,”开发者说。

冷漠是最大的错误。遗留应用之所以还存活着是因为,它们依然有用,而且和所有有用的应用一样,他们的用户会继续想要修改它们。如果团队抓住机会定义一个可以达到的愿景:希望应用会是什么样子,然后做出逐步增量的改变,他们就会离距离最终的愿景更进一步。

没有这样的愿景,团队的每个成员就会做出任何他/她所认为最正确的事情。一个人会使用Spring JdbcTemplate而另一个人会开始使用iBATIS/MyBatis。虽然每个人都真正期望改善这个应用,但事实上他们会让事情变得更糟,因为他们是在不同的方向上使力,使已经复杂的结构更加混乱。

技巧8:升级你的JRE

当我告诉一些团队Sun(现在是Oracle)早在2009年11月就已经宣称不在继续对JDK 1.5的支持时,他们仍然觉得惊讶不已。这不仅仅是立刻要升级JRE到1.6的事情。那些历经磨难的团队,还记得从1.1升级到1.2或者1.4升级到 1.5时所发生的一切,他们可能对这样的升级还感到犹豫。但我的经验是,这样的升级会很平滑,而且会给应用带来一次显著的免费的性能飞跃。另外,JDK 1.6还带来许多有用的、免费的运维和分析工具,来帮助诊断那些你这些年一直备受困扰的垃圾回收问题。

八个技巧之外

上面精心挑选出来的每个技巧,基本都是易于采用,并风险相对要低。但还有很多其他的方式来改善遗留应用,让应用改善后看起来就像是新的一样。

首先,现在的开放源代码库生态系统给过去大部分的遗留Java系统带来了生机。许多

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号