公司介绍 产品展示 业务支持 解决方案 文档资料
网站导航 访客留言 技术论坛
     
     
  产品资料
  业界动态
  JAVA技术


首  页 > 文档资料 > 产品资料  
 
  IDEA重构之SmartIntroduce

IDEA的重构功能非常强大,在这里不想再强调这一功能,不过我们还是想看看IDEA下的重构是如何进行的,这里我们介绍一下引入一个变量的功能(introduce a variable)。首先我们使用Ctrl+W或鼠标操作选择要进行重构的表达式,然后按下Ctrl+Alt+V,在弹出的“Introduce Variable”对话框中输入变量名称,可以使用如下代码进行演示:选中“one+two”,然后按下Ctrl+Alt+V,输入变量名称“sum”,IDEA就完成引入变量的功能啦。


public int add(int one,int two)
{
return one+two;
}

但是这里有一个不尽人意的地方就是要选中进行要进行重构操作的表达式,如果IDEA再聪明点,能够猜到我的意图就好啦。如以上代码中,如果我们光标在“one+two”之间,那么我们引入变量的操作应该就是针对“one+two”的,而不需要我们再执行选择表达式操作,这样不是很好,SmartIntroce就是这样出现的。SmartIntroce的目的就是当你在没有选择任何代码进行重构时,揣测你的意图,为你选择要进行操作的代码,这就是该插件的聪明之处。在演示该插件给重构操作带来的便捷之前,我们先进行安装,通过“Plugin Manager”下载此插件,重新启动IDEA后,在设置面板中选择“Smart Introduce”,在弹出的对话框中将此插件启用。该插件主要适应以下几种操作:“Introduce Variable”、“Introduce Constant”、“Introduce Field”、“Introduce Parameter”、“Extract Method”和“Surround With”。在你进行这几项操作时,SmartIntroduce就会自动启动。

SmartIntroduce安装完毕后,让我们看看以上的例子在启用了SmartIntroduce后是如何进行的。我们将光标置于“one+two”之间,如果没有启动SmartIntroduce,我们按下Ctrl+Alt+V,IDEA会默认选择改行“return one+two;”,那么这个操作就无法进行,应为这不是进行引入变量操作的合法表达式,失败。在启用SmartIntroduce后,你会发现IDEA自动选中了“one+two”,引入变量操作可以进行啦。
在让我们看一个例子,我们想打印一个人的First Name:


String name=”jacky chan”;
System.out.println(name.substring(name.indexOf(‘ ‘)+1)); //print first name

这里我们想引入First Name,这就是name.substring(name.indexOf(‘ ‘)+1)的返回值,所以我们将光置于“name.substring”中按下Ctrl+Alt+V你就会发现IDEA自动帮你选择啦。这里有一个技巧:如果将光标置于函数中,则会自动选择该函数的调用,将返回值引入到一个变量中;如果预重构的语句是另一个函数调用的参数,则会选择形成参数返回值的语句,形成一个新的参数传给函数方法。在有多种情况的条件下,SmartIntroduce会给你提示,让你选择适用的语句范围。这些例子同样适用于“Introduce Constant”、“Introduce Field”、“Introduce Parameter”。“Extract Method”和“Surround With”就现对简单点,Smart Introduce会根据代码块递增的原则让你选择适用的代码块。

总结:SmartIntroduce确实没有给重构带来新特点,但给重构的Introduce操作带来便捷,如果你了解了SmartIntroduce的特点和适用范围,相信会给你的操作带来意想不到的便捷。

SmartIntroduce的主页:http://www.intellij.org/twiki/bin/view/Main/SmartIntroducePlugin

SmartIntroduce在IDEA论坛上的讨论:http://www.intellij.net/tracker/idea/viewSCR?publicId=14308