我是C#的新手,并且制作了一个简单的成绩计算器作为学习的方式。 我有6个文本框供用户输入数字,然后字母等级将显示在其旁边。一切正常,但是似乎很多余,因为我要转换6个等级,而每个陈述只有5个if语句只显示字母,然后再给一个平均分数表示
。我认为有一种方法可以减少这种冗余
if (grade1 >= 80)
{
labelGrade1.Text = "A";
}
else if (grade1 >= 70 && grade1 <= 79)
{
labelGrade1.Text = "B";
}
if (grade2 >= 80)
{
labelGrade2.Text = "A";
}
else if (grade2 >= 70 && grade2 <= 79)
{
labelGrade2.Text = "B";
}
答案 0 :(得分:3)
创建一个封装重复代码的方法:
string LetterFromGrade(int grade)
{
if (grade > 79) return "A";
if (grade > 69) return "B";
...
}
然后在各处使用该方法。
labelGrade1.Text = LetterFromGrade(grade1);
labelGrade2.Text = LetterFromGrade(grade2);
...
答案 1 :(得分:0)
您可以像这样重构代码:
Action<int, Label> updateLabel = (value, label) =>
{
if ( value >= 80 )
label.Text = "A";
else
if ( value >= 70 )
label.Text = "B";
};
updateLabel (grade1, labelGrade1);
updateLabel (grade2, labelGrade2);
更好的气味。
您当然可以创建一个类方法,而不是创建一个本地方法,但是如果仅在一个方法中使用它,则本地方法会更好,因为一个类方法允许其他代码调用它,而该代码不适合他们使用。
答案 2 :(得分:-6)