Моя миссия заключается в рефакторинге оператора switch, который был написан плохо (он вызывает всплеск цикломатической сложности).Короче говоря, есть класс, который анализирует файл на различные значения.
class foo
{
//a sampling of the fields. Each have their appropriate property
private string _name;
private short _location;
private int _lineNumber;
private List<string> _siblings;
internal foo (StreamReader reader)
{
_siblings = new List<string>()
while (!reader.EndofFile)
{
switch (reader.ReadLine())
{
case "Name":
_name = reader.ReadLine();
break;
case "Location":
_location = short.Parse(reader.ReadLine());
break;
case "Line Number":
_lineNumber = int.Parse(reader.ReadLine());
break;
case "Brother":
case "Sister":
_siblings.Add(reader.ReadLine());
break;
//etc
}
}
}
//Other methods and such
}
Я прочитал эту тему, и, хотя, кажется, что есть много помощи, все это, похоже, указывает на шаблон проектирования Стратегии, который (я считаю) может решить мою проблему.В моем проекте есть несколько таких классов, некоторые из которых имеют более 25 операторов case (так что спасибо тем, кто может придумать идею и интерфейс или абстрактный класс)
Я думал оиспользуя Dictionary<String, TValue>
, как описано Джоном Сонмезом , но что тогда будет TValue?
Любая помощь будет принята с благодарностью.