Intellij包含一个很好的参数名称提示功能(Intellij idea - 如何始终显示方法参数名称)
它是否计划将Eclipse合并?
我想知道您对使用流畅的界面模式重构一个长方法的看法.
http://en.wikipedia.org/wiki/Fluent_interface
流畅的模式不包括在重构书中.
例如,假设您有这么长的方法(因为它有很多东西,所以有很长的名字)
class TravelClub {
Receipt buyAndAddPointsAndGetReceipt(long amount, long cardNumber) {
buy(amount);
accumulatePoints(cardNumber);
return generateReceipt();
}
void buy(int amount) {...}
void accumlatePoints(int cardNumber) {...}
void generateRecepit() {...}
}
Run Code Online (Sandbox Code Playgroud)
称为:
Receipt myReceipt = myTravelClub.buyAndAddPointsAndGetReceipt(543L,12345678L);
Run Code Online (Sandbox Code Playgroud)
这可以重构为:
class TravelClub {
TravelClub buy(long amount) {
//buy stuff
return this;
}
TravelClub accumulatePoints(long cardNumber) {
//accumulate stuff
return this;
}
Receipt generateReceipt() {
return new Receipt(...);
}
}
Run Code Online (Sandbox Code Playgroud)
并称为:
Receipt myReceipt = myTravelClub.buy(543L).accumulatePoints(12345678L).generateReceipt();
Run Code Online (Sandbox Code Playgroud)
从我的观点来看,分解long方法并分解其名称是一种非常好的方式.
你怎么看?
好的风格(清洁代码书)说方法的名称应该描述方法的作用.因此,例如,如果我有一个验证地址的方法,将其存储在数据库中,并发送电子邮件,如果名称是如此 verifyAddressAndStoreToDatabaseAndSendEmail(address);
要么
verifyAddress_StoreToDatabase_SendEmail(address);
虽然我可以在3种方法中划分该功能,但我仍然需要一种方法来调用这3种方法.所以一个大的方法名称是不可避免的.
拥有和命名的方法肯定描述了该方法的作用,但IMO它的可读性并不高,因为名称可能非常大.你会如何解决它?
编辑:也许我可以使用流畅的风格来分解方法名称,如:
verifyAddress(address).storeToDatabase().sendEmail();
但我需要一种方法来确保调用的顺序.也许通过使用状态模式,但这会导致代码增长.
我找不到如何使用 assertj 检查以下内容(这很常见):
假设我有:
result1 = {"AAA", "BBB"}
result2 = {"DDD"}
Run Code Online (Sandbox Code Playgroud)
我想检查结果中的值是以下之一:
String[] valid = String[]{"AAA", "BBB", "CCC"};
Run Code Online (Sandbox Code Playgroud)
使用assertj,应该是这样的:
assertThat(result1).xxxx(valid);
assertThat(result2).xxxx(valid);
Run Code Online (Sandbox Code Playgroud)
这样 result1 会通过检查,但 result2 不会。
contains() 不起作用(它检查结果是否包含所有有效元素)
我不想为这种检查创建自定义条件
任何想法?