Как минимизировать, если это для в C # - PullRequest
1 голос
/ 07 декабря 2010

У меня есть набор кодов в моей функции с множеством циклов if-else, но каждый выполняет разные

вроде

if(ddlname.SelectedIndex = 0)
{
//do this
}
else
{
//do this
}

if (txtprice.Text ="")
{
//do tis
}
else
{
//do this
}

Вся моя программа выглядит неуклюжей и излишне длиннойиз-за этого.У меня есть около 20 выпадающих списков и десять текстовых полей.Есть ли способ сделать это так просто, как 1 или 2 для циклов?

1 Ответ

2 голосов
/ 07 декабря 2010

Я сейчас читаю Чистый код Роберта С. Мартина . Согласно его книге, вы должны реорганизовать свой метод в несколько меньших методов, делая ровно одну вещь. Например, вы должны извлечь каждый из них в свой метод.

Что касается вашего вопроса, я не думаю, что есть какой-либо способ достижения той же логики с использованием циклов for, если вы не делаете то же самое для каждого вызова.

foreach (ctl in page.ctls)
{
  TextBox tempTextBox = ctl as TextBox;
  if (tempTextBox != null)
  {
    doTheSameForEveryTextBox(tempTextBox)
  }

  DropDownList tempDropDownList as DropDownList; // not sure if this is the right Type...
  if (tempDropDownList != null)
  {
    doTheSameForEveryTextBox(tempDropDownList)
  }
}

void doTheSameForEveryTextBox(TextBox tempTextBox)
{
  if (tempTextBox.Text == "")
  {
    //TODO: implement your code here
  }
}

void doTheSameForEveryDropDownList(DropDownList tempDropDownList)
{
  if (tempDropDownList.SelectedIndex == 0)
  {
    //TODO: implement your code here
  }
}
...