gpt4 book ai didi

java - 重构冗余的 if 语句

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:41:48 24 4
gpt4 key购买 nike

所以我目前正在重构一些类。我找到了一个类,它有两种方法。在第一种方法中,它有以下 if 语句:

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

(请记住,我稍微简化了一点。)

在第二种方法中我有:

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

如您所见,if 语句背后的逻辑完全相同。但是 sapData 和数据是不同的对象,方法(实际上只是 getter)具有不同的名称。

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

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

最佳答案

如果您使用的是较新版本的 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);
}

关于java - 重构冗余的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35901046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com