如何降低Switch case语句的Cyclomatic复杂性

有一个具有开关盒的function,我们需要减少它的CC

string data = string.empty; switch (value) { case "Less than 2 billion": data = "0 - 2B"; break; case "2 billion to 10 billion": data = "2B - 10B"; break; case "10 billion to 20 billion": data = "10B - 20B"; break; case "20 billion to 50 billion": data = "20B - 50B"; break; case "Greater than 50 billion": data = "> 50B"; break; case "N/A": data = "N/A"; break; case "[items] > 0": data = string.Empty; break; } return data; 

在这种情况下,您可以使用字典查找,它会少一些代码并且更清晰。

你可以这样做

 private Dictionary strategies = new Dictionary(); 

 private void LoadDictionary() { strategies.Add(enumType.Option1, Method1); strategies.Add(enumType.Option2, Method2); ... } 

 private void Method1(param1Type param, param2Type param2, etc) { // your specific logic here } 

你这样使用它:

 public void DoSomethingDependingOnCase(enumType option, param1Type param1, param2Type param2) { strategies[option].Invoke(param1,param2,etc); }