Есть метод, который принимает строку и в зависимости от строки возвращает кортеж Tuple с одним int и одним string значением. Проблема в том, что если расписать это как if-else то получится более 20 вариантов. switch не сработает для непостоянного значения, а тернарный оператор - для 2 значений разного типа. Вопрос - как упростить данный метод:
public static Tuple
if (SubClass.Contains("investment"))
{
Class = "bonds";
RiscLevel = 2;
return new Tuple
// и еще много if-else
return null;
}
catch (Exception ex)
{
BOX.ShowError(ex.Message, ex.Source);
return null;
}
}
В результате получается огромный массив if-else можно ли его как то сократить,
сделать более удобочитаемым?
Ответ
Материализуйте ваши варианты в виде структуры:
class Case
{
public string SubClass { get; }
public string Class { get; }
public int RiscLevel { get; }
}
Соответственно, ваш набор if-else превратится в foreach:
Case[] cases = { ... };
// ...
foreach (Case case in cases)
if (SubClass.Contains(case.SubClass))
return Tuple.Create(RiscLevel, Class);
return null;
Комментариев нет:
Отправить комментарий