我想知道您对使用流畅接口模式重构长方法的看法。
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() {...}
}
被称为:
Receipt myReceipt = myTravelClub.buyAndAddPointsAndGetReceipt(543L,12345678L);
可以重构为:
class TravelClub {
TravelClub buy(long amount) {
//buy stuff
return this;
}
TravelClub accumulatePoints(long cardNumber) {
//accumulate stuff
return this;
}
Receipt generateReceipt() {
return new Receipt(...);
}
}
并被称为:
Receipt myReceipt = myTravelClub.buy(543L).accumulatePoints(12345678L).generateReceipt();
在我看来,这是一种很好的方式来分解一个长方法,并且还可以分解它的名称。
你认为呢?