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

时间:2013-09-12 02:47:04

标签: c# if-statement random switch-statement case

我听说有很多方法可以清理代码并使其更快地执行。你能帮我清除下面的代码吗?我的程序上有很多编码,看起来像下面的代码。我还是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;

4 个答案:

答案 0 :(得分:9)

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

那就是说,我建议将你传递给JARVIS.Speak的所有字符串存储在这样的数组中:

string[] javisSays = new[] { 
    "Yes sir", 
    "Yes, whats up?", 
    "Yes, I'm here", 
    "I'm here", 
    "go head sir, ", 
    "I'm listening" 
};

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

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

答案 1 :(得分:2)

通过给出随机数然后

来创建返回说话文本的方法
case "jarvis":
    if(ranNum >0)
    {
        QEvent = "";
        JARVIS.Speak(GetQuote(ranNum));
    }
    break;

答案 2 :(得分:0)

可以做一个switch语句。

switch (ranNum )
        {
            case 1:
             QEvent = ""; JARVIS.Speak("Yes sir");
            break;
            case 2:
             QEvent = ""; JARVIS.Speak("Yes sir");
            break;
        }

答案 3 :(得分:0)

由于使用开关/盒子块和'jarvis'作为一种情况会表明可能有多个扬声器并且每个人可能有不同的说法,因此词典>将非常适合这里,制作发言者的集合和每个人都能说得更有活力的短语。

然后看起来像这样:

        string speaker;
        Dictionary<string, List<string>> Speakers = new Dictionary<string, List<string>>();
        Speakers.Add("jarvis",new List<string>{"Yes sir", 
                                                "Yes, whats up?", 
                                                "Yes, I'm here", 
                                                "I'm here", 
                                                "go head sir, ", 
                                                "I'm listening" });
        switch(speaker)
            case "jarvis":
                QEvent = ""; JARVIS.Speak(Speakers[speaker][rannum]);
                break;

使用此设置.csv甚至.xml文件来保存数据并将其添加到字典中是一件简单的事情。