나는 C#을 아주 새로운 오전 한 프로그램의 괴물에서 반복되는 코드의 다음 코드를 가지고 : 당신이 볼 수 있듯이변수를 변경하여 코드 리팩토링?
private void subjectBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string[] igcseSubjects = new string[5] {"IGCSE Maths", "IGCSE English", "IGCSE Chem", "IGCSE Phys", "IGCSE Bio"};
string selectedSubject = (string) subjectBox1.SelectedItem;
if (igcseSubjects.Contains(selectedSubject))
{
nBox1.Visible = aBox1.Visible = mBox1.Visible = eBox1.Visible = false;
cBox1.Visible = true;
maxBox1.Text = "100";
}
else
{
nBox1.Visible = aBox1.Visible = mBox1.Visible = eBox1.Visible = true;
cBox1.Visible = false;
maxBox1.Text = "20";
}
}
private void subjectBox2_SelectedIndexChanged(object sender, EventArgs e)
{
string[] igcseSubjects = new string[5] { "IGCSE Maths", "IGCSE English", "IGCSE Chem", "IGCSE Phys", "IGCSE Bio" };
string selectedSubject = (string)subjectBox2.SelectedItem;
if (igcseSubjects.Contains(selectedSubject))
{
nBox2.Visible = aBox2.Visible = mBox2.Visible = eBox2.Visible = false;
cBox2.Visible = true;
maxBox2.Text = "100";
}
else
{
nBox2.Visible = aBox2.Visible = mBox2.Visible = eBox2.Visible = true;
cBox2.Visible = false;
maxBox2.Text = "20";
}
}
이 두 이벤트 핸들러는 정확한 복제본을 뺀 컨트롤러 변수 이름. 실제 프로그램에는 이와 같이 더 많은 이벤트 처리기가 있으며 손에서 벗어납니다.
나는이 복사/붙여 넣기가 없어도 동일한 결과를 얻을 수있는 방법이 있다고 확신하지만 다른 변수 이름을 처리하는 방법을 알 수는 없습니다. 하나의 방법을 사용할 수 있습니까?
이 코드를 반복적으로 리팩터링 할 수 있습니까?
nBox 및 cBox 컨트롤에서 유일한 차이점은 무엇입니까? – Aphelion