简体   繁体   中英

How can i optimize this code?

I have this following code:

    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);
    }

Now the point is, this happens XX times, where XX is a number corresponding with the numbers you see within the code. So in the above example the XX is 01. *note, its the 01's in the input, and the 01 in the results too

In not very deep into c# (yet), and at first i thought that when XX is 20, i will need to copy this above part 20 times, and change the numbers. Now this seems cumbersome, and i guess there should be some smarter way ti deal with this, point is, i cant think of how (as written above, im not very deep into c# yet).

Anyone that can push me into the right direction ?

thank you in advance.

---EDIT 1--- thank you Miika L. slightly different from your solution:

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;
            }
        }

and now i can indeed just call: bool test = checkValue(userValueSom01, realResult01, Som01G, Som01W, labelSom01Check);

works :) thanx!

What about writing it as a function?

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();
    }
}

与其使用userValueSom01之类的名称来定义数以百计的变量,realResult01最好使用适当的数组字典

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM