Eclipse:最有用的重构

时间:2009-11-26 17:11:23

标签: java eclipse refactoring

我不时地使用Eclipse重构功能。有些技术比其他技术更明显,有些我从未尝试过。

哪种重构对您最有用?为什么?

注意:我发现这个演示文稿非常有用,可能因为它是示例驱动因此很容易理解:

Refactoring for everyone - How and why to use Eclipse's automated refactoring features

编辑:这篇文章也很有用(谢谢抖动)

Explore refactoring functions in Eclipse JDT

13 个答案:

答案 0 :(得分:52)

这是一个有趣的问题。我知道什么对我有用,看到其他人使用的东西很有意思。

我决定采用更科学的方法来确定最常用的重构命令。 Eclipse内置了Usage Data Collector (UDC)功能。数据为publicly available。我获取了数据并提取了下图,其中显示了最常用的编辑命令(没有导航命令)。

alt text http://img.skitch.com/20091207-bmcng36rjy837sqmcx58b85age.gif

但是,我坚信“保存操作”用于格式化和组织导入(阅读my article about it),所以我不会算这些。我也会删除评论行动。图片如下所示:alt text http://img.skitch.com/20091207-ieas1mk5114fwitucqkqxyw6t.gif

答案 1 :(得分:30)

重命名 - 因为提供有意义的名称是编写自我记录代码的最佳方式。 + 替代 + - [R

提取方法 - 只要方法过长。 + 替代 + 中号

提取常量 - 因为魔术数字不好。 Shift + Alt + T (重构菜单,没有直接的快捷方式)。

内联/引入变量 - 从方法中删除混乱。 Shift + Alt + I (内联), Shift + Alt + L (介绍)

答案 2 :(得分:20)

我的最爱(按使用顺序):

  1. 重命名(Alt-Shift-RCtrl-1以加快文件内重命名)
    良好的重命名变量,方法等。没有副作用。
  2. 提取变量(Ctrl-1Alt-Shift-L
    适合将快速制作的100个字符分割成单独的步骤。
  3. 提取方法(Alt-Shift-M
    用一些代码创建一个没有任何副作用的方法。
  4. 拆分变量声明(Ctrl-1
    在声明中初始化变量时很好,现在发现初始化需要在try-或if-block中。
  5. 更改方法签名(Alt-Shift-C
    方便签名操作的方便瑞士军刀,包括新参数的默认值。
  6. 上拉/下推 将方法和变量拉到通用接口或超类或将其推送到子类
  7. Extract Interface / Superclass
    从当前类中提取接口或超类。非常方便。

答案 3 :(得分:7)

我的最爱:

  1. 重命名
  2. 上拉/下推
  3. 提取方法

答案 4 :(得分:4)

最流行的重构已被陈述,我完全赞同。

代码格式化程序来源格式 Ctrl Shift F )是我经常使用的IDE的功能之一。确实,它不是重构,但它在保持编码风格的同时提高了代码可读性:只需转到首选项 Java 代码样式,< em> Formatter 并告诉Eclipse您希望代码看起来如何!

生成Getters和Setter 也是我在编写Java bean时节省时间的一项功能。

答案 5 :(得分:3)

对于所有流行的IDE,Eclipse可能是最少的重构。您可以考虑使用Netbeans或IntelliJ(社区版是免费的)。相反,Eclipse可能是最好的调试器。 ;)

我在编写代码时使用重构(我发现它的编写速度提高了大约15%)因此IntelliJ能够重构不能编译对我非常有用的代码。其他IDE现在可以支持这个(有人知道吗?) 我发现IntelliJ的智能完整性也更加智能。

我测试了从打印输出重新输入文件(最初用eclipse编写),发现用IntelliJ键入文件时使用的键少30%,鼠标移动少50%(与Eclipse相比)我估计Netbeans在某处中间。

答案 6 :(得分:2)

我最喜欢的是:

1)重命名 - 它适用于方法名称,变量名称,类名称,字段 - 实际上是任何带有名称的东西 2)将匿名类转换为嵌套 - 通过调试帮助您重复使用您认为在一个地方使用的逻辑(例如比较器)。
3)将成员类型转换为顶级 - 经常在将匿名类放入嵌套类之后,我发现该类在其他地方很有用。这种重构是完美的。

答案 7 :(得分:1)

我最常用的是按顺序重命名,提取方法和更改方法签名。

答案 8 :(得分:1)

红色衬里部分的CTRL + 1,即快速修复。

答案 9 :(得分:1)

我喜欢提取方法( Alt + Shift + M ),自3.6M1起,它现在处理选择包含continue语句。

  

为了保留现有代码的语义,选择需要包括循环的最后一个语句。在提取的方法中,continue语句被更改为返回:

Extract method refactoring with continue http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400/images/extract-method-continue.png

  

对于在提取的方法中需要多个返回值的选择,Eclipse现在会在错误消息中列出冲突的变量:

Extract method refactoring with an ambiguous return value error http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400/images/extract-method-multiple-return-values.png

答案 10 :(得分:0)

我用:

1-重命名 - 更正更好的方法名称

2-移动 - 以更好的方式组织我的包,比​​如当我开始我的项目时,它非常小,所以不需要io包,但现在是。

3-生成评论 - 当我创建.class时,请避免重新复制GPL许可证等

4-正确缩进 - 保持我的代码可读。

答案 11 :(得分:0)

还值得一读这项研究:D。Dig和R. Johnson的How do API evolve? A story of refactoring.

作者注意到,80%的变化都是重构并对其进行了分类。这是摘要:

  

框架和图书馆改变他们的   蜜蜂。将应用程序迁移到   新的API很繁琐,会扰乱它   发展进程。一些   已提出工具和想法   最重要的是解决API的发展   更新是手动完成的。为了更好   了解要求   迁移工具,我们研究了API   四个框架和一个框架的变化   图书馆。我们发现了   破坏现有的变化   应用程序不是随机的,但往往是   落入特定类别。   超过80%的这些变化是   重构。这表明   基于重构的迁移工具   应该用来更新应用程序。

答案 12 :(得分:-3)

“同样值得一读这项研究:API如何发展?重构的故事.D。Dig和R. Johnson。

作者注意到,80%的变化都是重构并对其进行了分类。这是抽象的......“

80%的BREAKING变化被认为是重构。 重构本身只占API变化的20-30%..