gpt4 book ai didi

java - 降低六向笛卡尔积的认知复杂性

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:58:59 24 4
gpt4 key购买 nike

我有一段代码有 Cognitive Complexity共 21

for (String item1 : itemList1){
for (String item2 : itemList2){
for (String item3 : itemList3){
for (String item4 : itemList4){
for (String item5 : itemList5){
for (String item6 : itemList6){
methodToRun(item1, item2, item3, item4, item5, item6);
}
}
}
}
}
}

我们的 linter 指定最大认知复杂度为 15,因此我应该按照我们一直遵循的标准来降低它。

任何人都可以为这段代码提出替代解决方案吗?或者尽管复杂性太高,但仍然可以接受吗?

我知道这可能是个人意见,但我正在寻找真正的解决方案或以前遇到过类似情况的人的答案。

编辑:我无法从我正在使用的开发机器访问很多库和包。我可以访问一些(太多无法列出),所以在建议使用之前请注意这一点。

最佳答案

您可以寻求递归解决方案。可以说它的可读性较差,但嵌套级别要低得多,从而降低了复杂性:

static void recursiveRun(List<List<String>> list, int pos, String[] item) {
if (pos == 6) {
methodToRun(item[0], item[1], item[2], item[3], item[4], item[5]);
} else {
for (String s : list.get(pos)) {
item[pos] = s;
recursiveRun(list, pos+1, item);
}
}
}

初始调用如下所示:

recursiveRun(
Arrays.asList(itemList1, itemList2, itemList3, itemList4, itemList5, itemList6)
, 0
, new String[6]
);

关于java - 降低六向笛卡尔积的认知复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425394/

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