阅读(2554) (10)

IntelliJ IDEA使用Push ITD In重构

2018-03-31 10:05:25 更新

使用Push ITD In重构

此功能仅在 Ultimate 版本中得到支持。

对于 aspect 来说,IntelliJ IDEA 支持大部分基本的重构,例如移动(Move)和重命名(Rename)。除此之外,您还可以为类型间声明执行 Push ITD In 重构。

在 Push ITD In 重构中,您可以将字段和方法的定义从各个 aspect 移至相应的类。(重构名称中的 ITD 代表 Inter-Type 声明。)

可以针对单个字段或方法、整个 aspect 或包中的所有 aspect 执行重构。

如果执行重构时某些 aspect 变为“empty”(当相关的 aspect 只包含类型声明时,可能会发生这种情况),则你可以选择自动删除所有这些 aspect。

使用示例

下表显示了 Push ITD In 重构的示例。 

在第一个例子中,closed 字段的声明从 MyAspect aspect 移动到类 Account。

在第二个示例中,该方法 close() 也从 MyAspect 移至 Account。

注意,如果为整个 MyAspect aspect 执行了重构,则这两种声明(即,声明 closed 和 close())可以被移动到类 Account。

示例一

操作前:

aspect myAspect {
    boolean Account.closed = false;
    void Account.close() {
        closed = true;
    }
    // some code here
}
class Account {
// some code here

}

操作后:

aspect myAspect {

    void Account.close() {
        closed = true;
    }
    // some code here
}
class Account {
    // some code here
    boolean closed = false;
}

示例二

操作前:

aspect MyAspect {
    void Account.close() {
        closed = true;
    }
    // some code here
}
class Account {
    // some code here
    boolean closed = false;



}

操作后:

aspect MyAspect {



    // some code here
}
class Account {
    // some code here
    boolean closed = false;
    void close() {
        closed = true;
    }
}

执行Push ITD重构

  1. 取决于重构的预期范围:
    • 如果要为单个字段或方法执行重构,请在编辑器中打开感兴趣的 aspect,并将光标置于字段或方法的声明中。
    • 要对整个 aspect 执行重构,请在“项目(Project)”工具窗口中选择感兴趣的 aspect。或者,在编辑器中打开该 aspect,并将光标置于各个类型间声明之外的某个位置(例如在 aspect 的声明内)。
    • 要对包中的所有 aspect 执行重构,请在“项目(Project)”工具窗口中选择包。
  2. 在主菜单或上下文菜单中选择:重构| 推入 ITDs In(Refactor | Push ITDs In)。
  3. 在打开的 Push Inter-Type 声明对话框中:
    1. 选择或清除“删除空白aspects(Delete empty aspects)”复选框。
    2. 单击“重构(Refactor)”立即执行重构,或者“预览(Preview)”以在实际执行重构之前研究预期的更改。
  4. 如果在上一步中单击了“预览(Preview)”,则会打开“查找(Find)”工具窗口,其中显示将要受到影响的类型间声明。如果对预期结果满意,请点击“进行重构(Do Refactor)”。