清理小块代码(Switch,Case,If?)

0 c# random if-statement case switch-statement

我听说有很多方法可以清理代码并使代码更快地运行.你能帮我清除下面的代码吗?我的程序上有很多编码,看起来像下面的代码.我还是C#的初学者

case "jarvis":
    if (ranNum == 1) { QEvent = ""; JARVIS.Speak("Yes sir"); }
    else if (ranNum == 2) { QEvent = ""; JARVIS.Speak("Yes, whats up?"); }
    else if (ranNum == 3) { QEvent = ""; JARVIS.Speak("Yes, I'm here"); }
    else if (ranNum == 4) { QEvent = ""; JARVIS.Speak("I'm here"); }
    else if (ranNum == 5) { QEvent = ""; JARVIS.Speak("go head sir, "); }
    else if (ranNum > 5) { QEvent = ""; JARVIS.Speak("I'm listening"); }
    break;
Run Code Online (Sandbox Code Playgroud)

p.s*_*w.g 9

使用干净代码的主要好处不是让它更快地执行 - 尽管这通常是一个结果 - 但是如果需求发生变化则更容易维护和修改.

也就是说,我建议将所有可能传递的字符串存储JARVIS.Speak在一个数组中,如下所示:

string[] javisSays = new[] { 
    "Yes sir", 
    "Yes, whats up?", 
    "Yes, I'm here", 
    "I'm here", 
    "go head sir, ", 
    "I'm listening" 
};
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样构造你的case语句:

case "jarvis":
    if (ranNum > 0)
    {
        QEvent = "";
        var quote = jarvisSays[Math.Min(ranNum, jarvisSays.Length) - 1];
        JARVIS.Speak(quote);
    }
    break;
Run Code Online (Sandbox Code Playgroud)

  • @AthomSfere你可以这样做,但除非你动态添加行或键值(`ranNum`)包含间隙,否则我没有看到它比简单数组的好处. (4认同)