@Coline

Как отрефакторить вложенные if else?

Имеется класс с набором состояний. В этом классе есть N функций. Каждая функция должна делать то или иное в зависимости от текущего состояния, попутно проверяя ввод. В итоге каждая функция похоже на что-то вроде
private void FuncN(string[] params)
{
    if (CheckFuncNParams(params))
        if (state == State.StateX)
            if (collection.ContainsKey(params[2]))
                index++;
            else
                Console.WriteLine("error message 3");
        else
            Console.WriteLine("error message 2");
    else
       Console.WriteLine("error message 1");
}

Можно развернуть проверки в линейные, но не знаю насколько стало лучше от этого
private void FuncN(string[] params)
{
    if (!CheckFuncNParams(params))
    {
        Console.WriteLine("error message 1");
        return;
    }
    if (state != State.StateX)
    {
        Console.WriteLine("error message 2");
        return;
    }
    if (collection.ContainsKey(params[2]))
        index++;
    else
        Console.WriteLine("error message 3");
}
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ответы на вопрос 1
DanielMcRon
@DanielMcRon
C# && Unity
Нужно повыносить всё в методы. И текст который вводится в Console.WriteLine генерировать зависимо от ошибки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы