gpt4 book ai didi

java - 违反干净编码原则?

转载 作者:行者123 更新时间:2023-12-01 17:41:57 24 4
gpt4 key购买 nike

假设我有一个类似的方法

void getCalled(Predicate<Integer> predicate, List<Integer> lst){
lst.stream().filter(predicate).forEach(...);
}

问题是,对于这个谓词,我将有两个选择,它们彼此否定。所以谓词是:

public class Helper {
public static boolean doesExist(int x){
return ..
}

public static boolean doesNotExist(int x){
return !doesExist();
}
}

现在在调用者中我很困惑,也就是说,我应该提取这个

void caller(){
List<Integer> lst = ...
getCalled(lst, Helper::doesExist);
getCalled(lst, Helper::doesNotExist);
}

这个问题,我不确定 Helper::doesNotExist 是否有额外的代码是一个很好的设计实践,因为它只是调用 doesExist 的否定。 ,类似:

void caller(){
List<Integer> lst = ...
getCalled(lst, Helper::doesExist);
getCalled(lst, x -> !Helper.doesExist(x)); //Ugly
}

同时,这是向getCalled提交谓词的最干净的方式。方法,通过有两个不同的谓词,doesExistdoesNotExist

任何想法

最佳答案

从 java 11 开始,你可以这样做:

getCalled(lst, Helper::doesExist);
getCalled(lst, Predicate::not(Helper.doesExist));

如果没有 - 与 @chrylis-on-strike 相同已经说过了,Guava

关于java - 违反干净编码原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59998247/

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