重构,嵌套方法调用

时间:2012-01-19 14:54:34

标签: java refactoring

我正在重构一个包含很多嵌套调用的程序,例如

ServiceManagement.getGlobalizationService()
                    .createExportConfiguration(
                            exportConfiguration,
                            getAdminWebClientSession().getUser().getToken()
                                    .getTokenValue());

我希望能有一些建议,关于什么样的重构在这里适合,以及开始重构的最佳和最简单的地方,现在我发现这是一个过于复杂和不明确的块。

1 个答案:

答案 0 :(得分:2)

第一件事:你是否完全确定这些调用都不会(我的意思是EVER)返回null?如果您不完全确定那么您应该这样做:

GlobalizationService gs = ServiceManagement.getGlobalizationService();
if (gs!=null) {
  ....
}

或者你可以捕获NullPointerException。

如果您完全确定没有必要,那么可读性方面有一个有用的轻微重构:

TokenValue tv = getAdminWebClientSession().getUser().getToken().getTokenValue();
ServiceManagement.getGlobalizationService()
                .createExportConfiguration(exportConfiguration,tv);

您可以考虑应用Demeter法直接从AdminClientSession获取TokenValue,但在一般情况下,重构不一定有用。 Demeter法则的替代应用会将TokenValue或Token传递给此代码所在的方法,但这不一定是个好主意。