在这种情况下你会怎么做来降低圈复杂度

if (Name.Text == string.Empty)
    Name.Background = Brushes.LightSteelBlue;

else if(Age.Text == string.Empty)
    Age.Background = Brushes.LightSteelBlue;

else if(...)
    ...

else
{
    // TODO - something else
}
假设我有 30 个或更多。

最佳答案

看起来您对每个“文本框”执行相同的逻辑(至少我认为它们是文本框)。我建议将它们全部放入一个集合中并执行以下逻辑:

// Using var, since I don't know what class Name and Age actually are
// I am assuming that they are most likely actually the same class
// and at least share a base class with .Text and .BackGround
foreach(var textBox in textBoxes)
{
    // Could use textBox.Text.Length > 0 here as well for performance
    if(textBox.Text == string.Empty)
    {
        textBox.Background = Brushes.LightSteelBlue;
    }
}

注意: 这确实改变了你的代码,因为我注意到你只检查一个“TextBox”的值,如果前面的没有空文本。如果你想保持这个逻辑,只需在 break; 后面放一个 textBox.Background = Brushes.LightSteelBlue; 语句,只有第一个空的“TextBox”才会设置背景颜色。

关于c# - 如何降低 if-else 语句中的圈复杂度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11208544/

10-17 01:20