重构长切换语句

 吕小布 发布于 2023-02-10 13:59

我在c#中编程,你通过口述命令控制,所以现在我有一个很长的switch语句.就像是

switch (command)

{
    case "Show commands":
        ProgramCommans.ShowAllCommands();
        break;
    case "Close window":
        ControlCommands.CloseWindow();
        break;
    case "Switch window":
        ControlCommands.SwitchWindow();
        break;
}

等等

几乎所有情况都只调用一个方法,方法不在一个类中,它们分布在许多类中.所以问题是,我如何能够将这种转换重构为更优雅的方式?

1 个回答
  • 您可以这样做来重构您的switch语句:

    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();
    }
    

    这种方法的主要优点是您可以在运行时更改"切换".

    2023-02-10 14:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有