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 (介绍)
我的最爱(按使用顺序):
- 重命名(
Alt-Shift-R
或Ctrl-1
以实现更快的文件内重命名)
好的重命名variables,方法等等。 没有副作用。 - 提取variables(
Ctrl-1
,Alt-Shift-L
)
好分裂一个快速制作的100个字符线分开的步骤。 - 提取方法(
Alt-Shift-M
)
从一些代码中创build一个没有任何副作用的方法。 - 分割variables声明(
Ctrl-1
)
当你在声明中初始化一个variables,并且现在发现初始化需要在try或if块中的时候是好的。 - 更改方法签名(
Alt-Shift-C
)
方便签名操作的方便的瑞士军刀,包括新参数的默认值。 - 上拉/下拉将方法和variables拖放到通用接口或超类,或将其向下推到子类
- 提取接口/超类
从当前类中提取接口或超类。 非常便利。
我最喜欢的:
- 重命名
- 上拉/下压
- 提取方法
最受欢迎的重构已经被陈述了,我完全同意它们。
代码格式化程序 ( Source , Format或Ctrl 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需要包含循环的最后一个语句。 在提取的方法中,继续语句被更改为返回:
对于在提取的方法中需要多个返回值的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变化。