我必須爲我的C#編程評估創建一個評分系統,並且我正在嘗試重構冗餘代碼。重構If語句
foreach (Student item in mark)
{
if (ComboBoxGradeMethod.SelectedIndex == 0)
{
item.Grade = vetMethod.VETGrade(item.Mark);
}
else if (ComboBoxGradeMethod.SelectedIndex == 1)
{
item.Grade = newVETMethod.VETGrade(item.Mark);
}
else if (ComboBoxGradeMethod.SelectedIndex == 2)
{
item.Grade = gradeMethod.CollegeGrade(item.Mark);
}
else
{
MessageBox.Show("Please select a grading scheme.");
}
}
在此'for each'循環中有3個if語句。我的一位朋友說我可以通過創建一個方法並傳遞一個函數作爲參數來減少代碼。
我是一名初學者程序員,他所說的現在有點超出我的意思。 我想知道如何去做這件事? 我不想整個答案,只是怎麼去做。
這是你是否將其移動到一個方法的風格問題。但是,他會這樣描述:'public void AssignGrade(Student item){}'。此方法將包含除「foreach」之外的所有內容。然後你會重寫foreach:'foreach(學生項目在標記){AssignGrade(項目); }'。我不相信這是一個很大的改進,除非你現在的方法很大。 – Rob
你應該把'if'語句移到循環之外。目前,如果您不選擇評分方案,您會收到很多消息框。 – Blorgbeard