重构长switch语句 [英] Refactor long switch statement
本文介绍了重构长switch语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的程序中,你控制通过口述命令C#所以现在我有很长的switch语句。类似于
I'm program in c# which you controlling by dictating command so now i have a long switch statement. Something like
switch (command)
{
case "Show commands":
ProgramCommans.ShowAllCommands();
break;
case "Close window":
ControlCommands.CloseWindow();
break;
case "Switch window":
ControlCommands.SwitchWindow();
break;
}
等
几乎所有的情况下调用只有一个方法,方法并不在一类它们分布在许多类。所以,问题是,我怎么能重构这个开关,更优雅的方式?
Almost all cases call only one method, methods are not in one class they are distributed in many classes. So the question is, how i could refactor this switch to more elegant way?
推荐答案
您可以做到这一点重构你的switch语句:
You can do this to refactor your switch statement:
var commands = new Dictionary<string, Action>()
{
{ "Show commands", () => ProgramCommans.ShowAllCommands() },
{ "Close window", () => ControlCommands.CloseWindow() },
{ "Switch window", () => ControlCommands.SwitchWindow() },
};
if (commands.ContainsKey(command))
{
commands[command].Invoke();
}
的主要优点这种方法是可以改变的开关在运行时。
The main advantage to this approach is that you can change the "switch" at run-time.
这篇关于重构长switch语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文