方法签名重构

Method Signature Refactoring

我有多个用户数据库需要搜索。用户可以有多个实例,应用程序会检查用户是否在不同数据库中重复。

所以每个用户都与一个客户相关联,并且根据客户的不同填充字段。 (我知道这是不对的,但这是继承的应用程序)我的想法是通过将客户端作为参数添加到 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)

}

我的问题是,我该如何最好地处理这个问题。目前我正陷入更改方法签名的困境,但如果这需要再次更改,我将不得不做同样的事情,这不会很有趣。

包装方法毫无用处。 引入参数对象并在可能的情况下内联包装器方法。

"Introduce parameter object"重构: