csharp进阶练习题:重构出一个switch语句的解释【难度:2级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

csharp进阶练习题:重构出一个switch语句的解释【难度:2级】:

这个习题的目的是重构了switch语句,并用字典"跳转表"代替

问题

尽管switch语句可以快速执行,是一个简单的结构,以掌握他们可以成为笨拙因为他们要增加维护的噩梦.
此外,他们不会轻易鼓励"打开关闭"的原则.考虑到这一点,我们会从代码中删除switch叙述,用它可以像一个"跳转表"中使用的辞典更换.

解决方案

您的解决方案将与到字典的呼叫替换GetStatusDescription()方法的开关case statment.该词典将被宣布为beloww:


私人只读字典<状态,串> _statusDescriptions;

其中Status如下列举:


公共枚举状态
{
    默认值= 0,
    新= 1,
    活动= 2,
    停用= 3
}

注意:
是的测试将通过无为和离开开关... case构造存在,但这种习题的想法是给你的洞察你的代码删除`之开关语句和寻找替代构造,在此情况下,一本字典.

请享用.

附:如果你喜欢这个习题然后选择"使用多态重构出一个switch语句"是一个类似的静脉.

编程目标:

using System;
  public class Kata
  {
      private readonly Status _status;
      public Kata()
      {
      }
      public Kata(Status status)
      {
          _status = status;
      public string GetStatusDescription()
      {
          switch (_status)
          {
              case Status.Default:
                  return "I have never been set";
22


测试样例:

using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Reflection;
[TestFixture]
public class ExampleTestCases
{
    {
        Assert.AreEqual("I have never been set", new Kata().GetStatusDescription());
        Assert.AreEqual("I am new!", new Kata(Status.New).GetStatusDescription());
        Assert.AreEqual("I am active", new Kata(Status.Active).GetStatusDescription());
        Assert.AreEqual("I have been deactivated", new Kata(Status.Deactivated).GetStatusDescription());
    }
17


最佳答案(多种解法):

点击查看答案

更多关联题目:

免责申明

本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars.com/
https://www.codewars.com/kata/refactor-out-a-switch-statement-to-a-dictionary

上一篇:golang no Go files


下一篇:kata application mount