Java 方法签名重构
我有多个需要搜索的用户数据库。用户可以有多个实例,应用程序会检查该用户在不同数据库中是否重复 因此,每个用户都与一个客户机关联,并且根据它是什么客户机来填充不同的字段。(我知道这不对,但这是继承的应用程序)我的想法是通过将客户机作为参数添加到getUserData方法中来重构它。然而我意识到这是一种改变预防的气味。有许多包装器方法将传递默认值。我还必须遍历调用层次结构,以便能够访问要传入的客户机对象。这可能是for或5个方法调用,因此我也必须更改它们。在这一点上,应用程序的开发方式(由其他开发人员开发)在这方面非常严格,我希望改进它 getUserData方法:Java 方法签名重构,java,refactoring,Java,Refactoring,我有多个需要搜索的用户数据库。用户可以有多个实例,应用程序会检查该用户在不同数据库中是否重复 因此,每个用户都与一个客户机关联,并且根据它是什么客户机来填充不同的字段。(我知道这不对,但这是继承的应用程序)我的想法是通过将客户机作为参数添加到getUserData方法中来重构它。然而我意识到这是一种改变预防的气味。有许多包装器方法将传递默认值。我还必须遍历调用层次结构,以便能够访问要传入的客户机对象。这可能是for或5个方法调用,因此我也必须更改它们。在这一点上,应用程序的开发方式(由其他开发人
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)
}
我的问题是,我如何最好地处理这个问题。目前我正在修改方法签名,但如果需要再次修改,我将不得不做同样的事情,这一点都不好玩。包装器方法没有任何用途。 在可能的情况下,引入参数对象并内联包装器方法 “引入参数对象”重构: