如何降低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); }