我有一个布尔标志,我想基于它执行一行功能,比如增加一个变量或调用一个对象的方法等等。在Java8中,用最小的认知复杂度来实现这一点的最佳方法是什么?
// Objects a is initialized;
// int x, y;
// boolean flag;
if (flag) {
a.doSomething1();
} else {
a.doSomethingElse1();
}
// want to check multiple times like this
if (flag) {
a.doSomething2();
} else {
a.doSomethingElse2();
}
if (flag) {
x++;
} else {
y++;
}
在Java8中,有没有更简单的方法来降低认知复杂性?当我面对这个sonarlint规则的问题时:方法的认知复杂性不应该太高,如果else语句太多
3条答案
按热度按时间cx6n0qe31#
我的代码如下所示:
所有这些都增加了认知的复杂性
f45qwnt82#
编辑
falq053o3#
回答你的具体例子:
因为一切只取决于
SomeClass
,逻辑也应该是这个类的一部分。一种方法是:void myMethod(List list) {
for (SomeClass a : list) {
a.doIt();
}
}
void myMethod(List list) {
list.forEach(SomeClass::doIt);
}