重构冗余的if语句

用户5417542

所以我目前正在做一些类的重构。我发现了一个类,它有两种方法。在第一种方法中,它具有以下if-Statement:

if(sapData.getTime > 100 || sapData.getUserName != null && sapData.getBusinessValue > 0)

(请记住,我有点轻松了。)

在第二种方法中,我有:

if(data.getTime > 100 || data.getNameOfUser != null && data.getBValue > 0)

如您所见,if语句背后的逻辑完全相同。但是sapData和data是不同的对象,而Methods(实际上只是吸气剂)具有不同的名称。

我现在想做的是编写一种方法isValid,可以在其中传递SapData对象或Data对象。

继承不是一种选择,因为应该将它们分开。

德米特里·金茨堡

如果您使用的是Java的较新版本,将getters方法传递isValid给特定类并对该方法进行重载可能是合适的

public static <T> boolean isValid(T data,
        Function<? super T, Integer> timeGetter,
        Function<? super T, String> usernameGetter,
        Function<? super T, Integer> businessValueGetter) {
    return (timeGetter.apply(data) > 100 || usernameGetter.apply(data) != null && businessValuesGetter.apply(data) > 0);
    // or something more complex
}

public static boolean isValid(Data data) {
    return isValid(data, Data::getTime, Data::getUserName, Data::getBusinessValue);
}

public static boolean isValid(SapData data) {
    return isValid(data, SapData::getTime, SapData::getUserName, SapData::getBusinessValue);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章