我正在重构一个包含很多嵌套调用的程序,例如
ServiceManagement.getGlobalizationService()
.createExportConfiguration(
exportConfiguration,
getAdminWebClientSession().getUser().getToken()
.getTokenValue());
我希望能有一些建议,关于什么样的重构在这里适合,以及开始重构的最佳和最简单的地方,现在我发现这是一个过于复杂和不明确的块。
答案 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传递给此代码所在的方法,但这不一定是个好主意。