c# - 重构我的 C# 代码 - Switch 语句

标签 c# refactoring switch-statement

我有以下我目前正在使用的代码......基本上,这个方法为每个任务分配正确的 bool 标志(TRUE/FALSE)。随着越来越多的任务需要添加..我可以看到 switch 语句必须增长以满足每个任务。

必须有一种更简单的方法……来保持方法的小型化。

代码:(忘记命名约定,已更改发布)

public ClassStructure.User AssignTaskStatusToUser(ClassStructure.User,
                                                  List<ClassStructure.Tasks> TaskStatus)
{
    foreach (ClassStructure.Tasks data in TaskStatus)
    {
        string Task_CallID = data.Task_Call_ID;

        switch (Task_CallID)
        {
            case ClassStructure.Tasks_CallIDs_Strings.TASK1:
                User.TASK1 = data.Task_Flag;
                break;

            case ClassStructure.Tasks_CallIDs_Strings.TASK2:
                User.TASK2 = data.Task_Flag;
                break;

            case ClassStructure.Tasks_CallIDs_Strings.TASK3:
                User.TASK3 = data.Task_Flag;
                break;
        }
    }

    return User;
}

ClassStructure.Tasks_CallIDs_Strings = 任务的字符串表示

data.Task_Flag = bool 值

User.TASKX = bool 值

欢迎任何反馈。我相信有一个简单的解决方案。

最佳答案

对于很多这样的值,我会使用这样的 map :

Dictionary<ClassStructure.Tasks_CallIDs_Strings, Task_Flag>

并通过映射 CallID 字符串来检索值。

编辑:

大家现在可以看到,重构这个例子的真正问题在于重构User.TASKX。使其成为一个列表就足够了——因为它可以被相同的字符串索引 ClassStructure.Tasks_CallIDs_Strings

关于c# - 重构我的 C# 代码 - Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/561401/

相关文章:

c# - Exchange 失去连接时不触发 Outlook 事件

c# - 如何重构在字典中存储大量 SqlCommand 的大类

refactoring - 将一系列重复的 View 组件提取到自己的 View 中的最佳方法?

javascript - 条件和 switch 语句的问题

c# - 本地资源文件中代码隐藏字符串的翻译

javascript - 如何使用 ModalPopupExtender 在嵌套面板中触发 OnClick 事件?

c# - 验证器忽略 MaxLength 属性

c++ - 提取方法时返回语句

c++ - 切换语句失败

swift - 如何将 Swift "switch case is ..." block 转换为面向循环的代码?