Java 重构方法降低了开关案例的认知复杂性
您好,我很难降低认知复杂性有什么方法可以降低吗? 任何帮助都将不胜感激。由于声纳干扰,我无法传递代码 多谢各位Java 重构方法降低了开关案例的认知复杂性,java,spring,algorithm,spring-boot,jackson,Java,Spring,Algorithm,Spring Boot,Jackson,您好,我很难降低认知复杂性有什么方法可以降低吗? 任何帮助都将不胜感激。由于声纳干扰,我无法传递代码 多谢各位 private void addSth(List<Integer> myStatus, List<String> myId, String taskOwner, StringBuilder queryStatement, List<Object> args) { if (null != myStatus&&a
private void addSth(List<Integer> myStatus, List<String> myId, String taskOwner, StringBuilder queryStatement, List<Object> args) {
if (null != myStatus&& myStatus.size >0) {
queryStatement.append("and (");
for(int i = 1; i <= status.size(); i++) {
int status = myStatus.get(i-1);
switch (status) {
case 1:
StringBuilder potSth = new StringBuilder();
if (null != myId && myId.size() > 0) {
pothSth.append("(");
for (int j=1; j <= myId.size(); j++)
pothSth.append(" ? ");
if (j < myId.size())
pothSth.append(", ")
pothSth.append(")");
queryStatement.append("sth");
queryStatement.append(pothSth);
queryStatement.append(")\n");
args.add(1);
for (String pOwner : ownerId) {
args.add(pOwner);
break;
case 2:
case 3:
queryStatement.append("or ");
args.add(status);
args.add(taskOwner);
if (i < myStatus.size ) {
queryStatement.append("or ");
private void addSth(List myStatus、List myId、String taskOwner、StringBuilder queryStatement、List args){
if(null!=myStatus&&myStatus.size>0){
queryStatement.append(“and”(“);
对于(int i=1;i 0){
第四款附加(“(”);
对于(int j=1;jSonarint,Sonarint根据三个因素测量认知复杂性:
忽略允许将多个语句简化为一个语句的结构
代码线性流中每个中断的增量(添加一个)
嵌套流中断结构时的增量
资料来源:第4页
我建议将addSth
方法分解为几个较小的方法,可能用于处理状态,附加到pothth
和附加到queryStatement
另外,它的结尾似乎缺少了一些大括号,所以我不能完全确定这段代码在做什么。正如Jonny所说,一些上下文和格式将不胜感激。:)你能把你的问题包括在你的所有代码中吗?你能把你的代码格式化以便更容易理解吗?谢谢你的回答。代码中的花括号是正确的,但是,我不能把它放在这里,你能不能也写下如何将我的方法分解成更小的方法?既然没有任何右括号,我不确定嵌套的int是什么o什么,但是类似于private void addSth(…args…{appendAndIfValidStatus(queryStatement)…appendCharBasedOnStatus(pothth)…addPOwner(args,pOwner)…}
(为奇怪的格式道歉,迷你降价对我来说是新的)