Как я могу оптимизировать этот код? - PullRequest
0 голосов
/ 16 января 2012

У меня есть следующий код:

    if (userValueSom01 == realResult01)
    {
        //answer = correct
        //count +1 for overall good answers
        WpfApplication1.Properties.Settings.Default.totallGood++;
        //count for good +1
        answerThisWindowGood++;
        //make visible the green logo
        Som01G.Visibility = Visibility.Visible;
    }
    else
    {
        //answer = wrong
        //count +1 for overall wrong answers
        WpfApplication1.Properties.Settings.Default.totallWrong++;
        //count for wrong +1
        answerThisWindowWrong++;
        //make visible the red logo
        Som01W.Visibility = Visibility.Visible;
        labelSom01Check.Content = Convert.ToString(realResult01);
    }

Теперь дело в том, что это происходит XX раз, где XX - это число, соответствующее числам, которые вы видите в коде. Таким образом, в приведенном выше примере XX это 01. * обратите внимание, это 01 на входе, и 01 в результатах тоже

Не очень глубоко в c # (пока), и сначала я подумал, что когда XX будет 20, мне нужно будет скопировать эту часть выше 20 раз и изменить числа. Теперь это кажется громоздким, и я думаю, что должен быть какой-то более умный способ справиться с этим, дело в том, что я не могу думать о том, как (как написано выше, я еще не очень глубоко в C #).

Кто-нибудь, кто может подтолкнуть меня в правильном направлении?

Заранее спасибо.

--- РЕДАКТИРОВАТЬ 1 --- спасибо миика л. немного отличается от вашего решения:

public bool checkValue(double value, int result, Image controlG, Image controlW, Label label)
        {
            if (value == result)
            {
                //... Do stuff
                controlG.Visibility = Visibility.Visible;
                return true;
            }
            else
            {
                //... Do other stuff
                controlW.Visibility = Visibility.Visible;
                label.Content = result.ToString();
                return false;
            }
        }

и теперь я действительно могу просто позвонить: bool test = checkValue (userValueSom01, realResult01, Som01G, Som01W, labelSom01Check);

работает :) спасибо!

Ответы [ 2 ]

1 голос
/ 16 января 2012

А как насчет записи в качестве функции?

public bool checkValue(
    int value,
    int result,
    Control controlG,
    Control controlW,
    Label label)
{
    if (value == result)
    {
        ... Do stuff
        controlG.Visibility = Visibility.Visible;
    }
    else
    {
        ... Do other stuff
        controlW.Visibility = Visibility.Visible;
        label.Content = result.ToString();
    }
}
0 голосов
/ 16 января 2012

Вместо определения сотен переменных с именами в названии, таких как userValueSom01, realResult01 лучше использовать Array или Dictionary , если это уместно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...