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# – 如何提高循环复杂性?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)