У меня есть код, который должен присвоить некоторые значения его свойствам в соответствии с заданным порядком.Каков наилучший способ реализации метода переупорядочения?
Ниже приведен пример кода, который будет выполнять работу:
public class AnimalCount
{
public int Dogs;
public int Cats;
public int Fish;
public int Birds;
public void RankValues(string first, string second, string third, string fourth)
{
string property = "";
int value = -1;
for (int i = 0; i < 4; i++)
{
switch (i)
{
case 0: property = first; value = 10; break;
case 1: property = second; value = 12; break;
case 2: property = third; value = 19; break;
case 3: property = fourth; value = 20; break;
}
switch (property)
{
case "dogs": Dogs = value; break;
case "cats": Cats = value; break;
case "fish": Fish = value; break;
case "birds": Birds = value; break;
}
}
}
}
Есть некоторые проблемы с этим кодом, однако.
- Основная проблема заключается в том, как передать параметры. С помощью этого метода, поскольку они передаются как строки, мы теряем безопасность типа. Таким образом, мы могли бы иметь дубликаты или несогласованные строки. Мы могли бы использовать перечисления, но тогда у нас все еще есть риск дублирования, и нам нужно будет сделать дублирование кода, чтобы он работал.
- Коммутаторы являются уродливыми. Это похоже на дублирование кода.
Есть ли лучшее решение, чем просто заполнение кода обработкой исключений? Кажется ужасно уродливым для меня.
Если вы должны знать, я пытаюсь написать функцию, которая берет требуемый порядок баллов в Dungeons and Dragons и рулонах для них в выбранном вами порядке.
Вы используете специфические язык? Выглядит C#/java для меня? – robasaurus
да, это C#, но вопрос будет применен для любого процедурного языка – Nacht
C# объектно ориентирован не процедурный. – robasaurus