c# – 如何提高循环复杂性?

c# – 如何提高循环复杂性?,第1张

概述对于具有大量决策语句(包括if / while / for语句)的方法,Cyclomatic Complexity将很高.那么我们如何改进呢? Cos我正在处理一个大项目,我应该减少CC的方法有CC>这个问题有许多方法.下面我会列出一些例如代码模式(而不是实际的代码)与我遇到的问题.是否可以简化它们? 导致许多决策声明的案例示例: 情况1) if(objectA != null) //object 对于具有大量决策语句(包括if / while / for语句)的方法,Cyclomatic Complexity将很高.那么我们如何改进呢?

Cos我正在处理一个大项目,我应该减少CC的方法有CC>这个问题有许多方法.下面我会列出一些例如代码模式(而不是实际的代码)与我遇到的问题.是否可以简化它们?

导致许多决策声明的案例示例:

情况1)

if(objectA != null) //objectA is a pass in as a parameter{ objectB = doThisMethod(); if(objectB != null) {  objectC = doThatMethod();  if(objectC != null)  {   doXXX();  }  else{   doYYY();  } } else {  doZZZ(); }}

案例2)

if(a < min) min = a;if(a < max) max = a;if(b > 0) doXXX();if(c > 0){ doYYY();}else{ doZZZ(); if(c > d)  isTrue = false; for(int i=0; i<d; i++)  s[i] = i*d; if(isTrue) {  if(e > 1)  {   doALotOfStuff();  } }}

情况3)

//note that these String Constants are used elsewhere as diff combination,//so u can't combine them as oneif(e.Propertyname.Equals(StringConstants.AAA) ||e.Propertyname.Equals(StringConstants.BBB) ||e.Propertyname.Equals(StringConstants.CCC) ||e.Propertyname.Equals(StringConstants.DDD) ||e.Propertyname.Equals(StringConstants.EEE) ||e.Propertyname.Equals(StringConstants.FFF) ||e.Propertyname.Equals(StringConstants.GGG) ||e.Propertyname.Equals(StringConstants.HHH) ||e.Propertyname.Equals(StringConstants.III) ||e.Propertyname.Equals(StringConstants.JJJ) ||e.Propertyname.Equals(StringConstants.KKK)) { doStuff();}
解决方法 案例1 – 通过重构到较小的功能来处理这一点.例如.以下代码段可能是一个函数:
objectC = doThatMethod();if(objectC != null){ doXXX();}else{ doYYY();}

案例2 – 完全一样的做法.将else子句的内容转换为较小的帮助函数

情况3 – 列出您要检查的字符串,并创建一个小型帮助函数,将字符串与许多选项进行比较(可以使用linq进一步简化)

var stringConstants = new string[] { StringConstants.AAA,StringConstants.BBB etc };if(stringConstants.Any((s) => e.Propertyname.Equals(s)){    ...}
总结

以上是内存溢出为你收集整理的c# – 如何提高循环复杂性?全部内容,希望文章能够帮你解决c# – 如何提高循环复杂性?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1236739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存