我在这里有此代码:
assertThat( new Whatever(TestPerson.class, ReadOnly.class) .foo(), is(bar));
在单元测试中。我认为我将需要多个不同的此类调用,这些调用仅在第二个参数中有所不同。所以我想创建一个辅助方法,以便我可以做
assertThat( makeFor(ReadOnly.class) .foo(), is(bar));
我想为此使用IntelliJ的重构功能,但是当选择new Whatever.... .class)
并使用 Extract方法时,两个参数都将在生成的方法中“硬编码”。但是我只希望第一个参数是硬编码的,而第二个则是新方法的参数。
现在我想知道:是否有一种优雅的方法可以执行一些神奇的IntelliJ重构动作?没有我在提取该方法后手动添加参数吗?
答案 0 :(得分:2)
您必须组合两个重构动作,并且了解不同的组合是保存和快速重构的关键。
我想到两种不同的组合:
您使用extract method
(alt+ctrl+m
)重构,提取该方法后,选择ReadOnly.class
使用extract parameter
(alt+ctrl+p
)重构。
您可以通过ReadOnly.class
(extract variable
)精炼来提取alt+ctrl+v
作为变量。然后,选择new Wahtever(...
代码并使用extract method
(alt+ctrl+m
),最后选择提取的变量并使用inline variable
(alt+ctrl+n
)。
使用1.工作流程时,您有机会Intellij Idea将检测到重复项并提出签名更改建议,并且还将提取其他方法。这取决于方法调用的相似程度。
BTW:这就是释放IDE力量的知识。我猜我键入的代码少于一半。其余的由重构动作和生成器生成。
示例:
null
通过后缀完成检查:
someObject.null <tab>
将导致:
if (someObject != null) {
<CURSOR>
}
Live templates是另一种以可执行方式存储相同代码模式的方式。