快速业务通道

使用Eclipse自动重构特性的方法与原因 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
() 方法被另一个类中的方法调用,如清单17所示。

清单 17. callTest 方法

public void callTest() { MethodSigExample eg = new MethodSigExample(); int r = eg.test("hello", 10); }

在第一个类中高亮选中 test ,然后选择 Refactor > Change Method Signature。您将看到如图8所示的对话框。

图 8. Change Method Signature 选项

第一个选项是改变该方法的可见性。在本例中,将其改变为 protected 或者 private,这样第二个类的 callTest() 方法就不能访问这个方法了。(如果这两个类在不同的包中,将访问方法设为缺省值也会引起这样的问题。)Eclipse在进行重构的时候不会将这些问题标出,您只有自己选择适当的值。

下面一个选项是改变返回值类型。如果将返回值改为 float ,这不会被标记成错误,因为 test() 方法返回语句中的 int 会自动转换成 float 。即便如此,在第二个类的 callTest() 方法中也会引起问题,因为 float 不能转换成 int 。您需要将 test() 的返回值改为 int ,或者是将 callTest() 中的 r 改为 float 。

如果将第一个参数的类型从 String 变成 int ,那么也得考虑相同的问题。在重构的过程中这些问题将会被标出,因为它们会在被重构的方法内部引起问题: int 不具有方法 length() 。然而如果将其变成 StringBuffer ,问题就不会标记出来,因为 StringBuffer 的确具有方法 length() 。当然这会在 callTest() 方法中引起问题,因为它在调用 test() 的时候还是把一个 String 传递进去了。

前面提到过,在重构引发了问题的情况下,不管问题是否被标出,您都可以一个一个地修正这些问题,以继续下去。还有一种方法,就是先行修改这些错误。如果您打算删除不再需要的参数 i ,那么可以先从要进行重构的方法中删除对它的引用。这样删除参数的过程就更加顺利了。

最后一件需要解释的事情是 Default Value 选项。这一选项值仅适用于将参数加入方法签名中的情况。比方说,如果我们加入了一个类型为 String 的参数,参数名为 n ,其缺省值为 world ,那么在 callTest() 方法中调用 test() 的代码就变成下面的样子:

public void callTest() { MethodSigExample eg = new MethodSigExample(); int r = eg.test("hello", 10, "world"); }

在这场有关 Change Method Signature 重构的看似可怕的讨论中,我们并没有隐藏其中的问题,但却一直没有提到,这种重构其实是非常强大的工具,它可以节约很多时间,通常您必须进行仔细的计划才能成功地使用它。

结束语

Eclipse 提供的工具使重构变得简单,熟悉这些工具将有助于您提高效率。敏捷开发方法采用迭代方式增加程序特性,因此需要依赖于重构技术来改变和扩展程序的设计。但即便您并没有使用要求进行正式重构的方法,Eclipse 的重构工具还是可以在进行一般的代码修改时提供节约时间的方法。如果您花些时间熟悉这些工具,那么当出现可以利用它们的情况时,您就能意识到所花费的时间是值得的。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号