Eclipse:最有用的重构

我现在每次都使用Eclipse的重构function。 有些技术比其他技术更明显,有些我从来没有尝试过。

什么重构对你最有用,为什么?

注:我觉得这个演示文稿非常有用,也许是因为它是示例驱动,因此容易理解:

“ 为每个人重构 – 如何以及为什么使用Eclipse的自动化重构function ”

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

探索Eclipse JDT中的重构函数

这是一个有趣的问题。 我知道什么对我有用,看到别人使用什么是很有趣的。

我决定采取更科学的方法来确定最常用的重构命令。 Eclipse具有内置的使用数据收集器(UDC)function。数据是公开可用的 。 我拿了数据,并提取了下面的图表,显示了最常用的编辑命令(没有导航命令)。

替代文字http://img.skitch.com/20091207-bmcng36rjy837sqmcx58b85age.gif

但是,我坚信“保存行动”来格式化和组织导入(阅读我的文章 ),所以我不会计算这些。 我也会删除评论的行动。 图片看起来像这样: alt text http://img.skitch.com/20091207-ieas1mk5114fwitucqkqxyw6t.gif

重命名 – 因为给出有意义的名字是编写自我logging代码的最好方法。 Shift + Alt + R

提取方法 – 只要方法变得太长。 Shift + Alt + M

提取常量 – 因为幻数不好。 Shift + Alt + T (重构菜单,没有直接的快捷键)。

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

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

  1. 重命名( Alt-Shift-RCtrl-1以实现更快的文件内重命名)
    好的重命名variables,方法等等。 没有副作用。
  2. 提取variables( Ctrl-1Alt-Shift-L
    好分裂一个快速制作的100个字符线分开的步骤。
  3. 提取方法( Alt-Shift-M
    从一些代码中创build一个没有任何副作用的方法。
  4. 分割variables声明( Ctrl-1
    当你在声明中初始化一个variables,并且现在发现初始化需要在try或if块中的时候是好的。
  5. 更改方法签名( Alt-Shift-C
    方便签名操作的方便的瑞士军刀,包括新参数的默认值。
  6. 上拉/下拉将方法和variables拖放到通用接口或超类,或将其向下推到子类
  7. 提取接口/超类
    从当前类中提取接口或超类。 非常便利。

我最喜欢的:

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

最受欢迎的重构已经被陈述了,我完全同意它们。

代码格式化程序SourceFormatCtrl Shift F )是我经常使用的IDEfunction之一。 诚然,这不是重构,但是它改进了代码的可读性,同时保持了你的编码风格:只需转到首选项Java代码风格格式化程序,并告诉Eclipse你希望你的代码看起来如何!

生成Getters和Setter也是我在编写Java bean时节省时间的一个特性。

对于所有stream行的IDE,Eclipse可能是最less的重构。 你可能会考虑Netbeans或IntelliJ(社区版是免费的)。 相反,Eclipse可能是最好的debugging器。 ;)

我在写代码的时候使用了重构(我发现编写代码的速度提高了大约15%),所以IntelliJ能够重构那些对我来说不是很有用的代码。 其他的IDE现在可以支持这个(有人知道吗?)我发现IntelliJ的智能完整也是智能的。

我已经testing了从打印输出文件(最初是在eclipse中)重新input文件,发现用IntelliJinput文件时(与Eclipse相比),我使用的键less了30%,鼠标移动less了50%,我估计Netbeans是在中间的某个地方。

我的最爱是:

1)重命名 – 它适用于方法名称,variables名称,类名称,字段 – 真正的任何名称。
2)将匿名类转换为嵌套 – 帮助debugging,让您重复使用只能在一个地方使用的逻辑(比如比较器)。
3)将成员types转换为顶级 – 通常在将匿名类转换为嵌套类之后,我发现这个类在其他地方很有用。 那么这个重构是完美的。

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

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

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

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

用继续提取方法重构http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400http://img.dovov.comextract-method-continue.png

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

用模糊的返回值错误提取方法重构http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400http://img.dovov.comextract-method-multiple-return-values.png

我用 :

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

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

3-生成评论 – 当我创build一个.class,避免我重新复制GPL许可证等

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

API也值得一读: API如何演变? 一个重构的故事。 D.Dig和R.Johnson。

作者注意到,80%的变化是重构,并将其分类。 这里是摘要:

框架和库改变他们的API。 将应用程序迁移到新API非常繁琐,并扰乱了开发过程。 虽然已经提出了一些工具和想法来解决API的演变,但大部分更新都是手动完成的。 为了更好地理解迁移工具的需求,我们研究了四个框架和一个库的API变更。 我们发现,破坏现有应用程序的变化不是随机的,而是倾向于属于特定的类别。 超过80%的这些变化是重构。 这表明应该使用基于重构的迁移工具来更新应用程序。

“这也是值得阅读这个研究的:API是如何演化的?一个重构的故事,由D.Dig和R.Johnson。

作者注意到,80%的变化是重构,并将其分类。 这是抽象的…“

观察到80%的突变变化是重构。 重构本身只形成了20-30%的API变化。