【发布时间】:2021-04-30 16:20:55
【问题描述】:
我正在开发一个 AI 文本通信引擎,我想知道是否有人指出我的方向是更有效的方法来验证用户输入而不是 只是 switch / if 语句。
这是它的基础:
void Update(){
string s = Console.Read()s.ToLower();
if (s == "c1"){
// do 1
}
else if (s == "c2"){
// do 2
}
...
else if (s == "c9342"){
// do 9342
}
}
我应该补充一下,我有能力检查句子中的关键字。
我觉得由于所有输入都是字符串,并且它正在处理语言,这可能是唯一的方法,但如果有人有更好的方法,例如。接口、自定义类型、反射、线程或任何东西,我都在听。
谢谢,安迪
【问题讨论】:
-
方法有很多。我可能会使用预先填充的ternary search tree。
-
如果你需要帮助重构代码,你需要提供真实的代码,有真实的案例,不是所有的,但最小的看原理图,能够提供帮助,或者使用 codereview.stackexchange。 com。所以在这里,它是广泛的。系列 c1, c2, c3, c4, c5...c9342 是否以 +1 为增量?还有什么是do1,do2,do3 ...?方法 ?具有可提取参数的重复内部代码?还是完全不同的处理?否则,除了 if 和 switch,以及在某些方法和循环中使用参数分解之外,您还可以使用像 @AndreSantarosa 的答案公开的调度表。
-
要添加到其他人,不要一直做
.ToLower(),只要做.Equals(...., StringComparison.OrdinalIgnoreCase)
标签: c# if-statement switch-statement refactoring processing-efficiency