1
我有多个用户需要搜索的数据库。用户可以有多个实例,应用程序会检查用户是否在不同的数据库中重复。方法签名重构
因此,每个用户都与一个客户端关联,并且这些字段根据客户端的不同而被填充。 (我知道这是不对的,但这是继承的应用程序)我的想法是通过将客户端作为参数添加到getUserData方法中来重构它。但是我意识到这是一种防止变味的气味。有很多包装方法会传递默认值。我还必须遍历调用层次结构,以便我可以访问要传入的客户端对象。这可能是五个或五个方法调用,所以我将不得不更改这些调用。在这一点上,应用程序开发(由其他开发人员)的方式非常僵化,我期待着改进它。
的getUserData方法:包装方法的
public User getUserData(String userId, boolean fullUserRecord, Date userStartDate){
//retrive userdata from db
//attach client specific data for user
}
例子:
public User getUserData(String userId, Date userStartDate){
getUserData(userId, false, userStartDate)
}
我的问题是,我该如何最好地处理这个。目前我正在改变方法签名的兔子洞,但如果这需要再次改变,我将不得不做同样的事情,这将不会很有趣。
所以,因为我有一个链接到我想改变方法签名许多链式调用,我应该使用保存整个对象并在调用链的开始处重新开始重构? – ephemeralCoder
我会做相反的事情:从底部开始,您可以看到所有参数,然后逐渐内联。此外,如果许多参数是可选的,则可以为参数对象创建专门的构造函数或方法工厂。如果这有助于可读性,您甚至可以进一步创建流畅的构建器。 – JnRouvignac
我最终创建了带有专门构造函数的参数对象。现在代码更易于管理。我可能会考虑为该对象创建一个构建器,使其更具可读性。谢谢! – ephemeralCoder