2012-04-26 3 views
4

Этот фрагмент кода if/else, и я хочу знать, можно ли его упростить до нескольких строк. Код работает отлично, но я предпочитаю более эффективный и чистый способ.Можно ли упростить этот код?

if (textBox_naam.Text.Length < 3) 
{ 
    textBox_naam.BackColor = Color.FromArgb(205, 92, 92); 
} 
else 
{ 
    textBox_naam.BackColor = Color.White; 
} 

if (textBox_email.Text.Length < 5) 
{ 
    textBox_email.BackColor = Color.FromArgb(205, 92, 92); 
} 
else 
{ 
    textBox_email.BackColor = Color.White; 
} 

if (textBox_body.Text.Length < 20) 
{ 
    textBox_body.BackColor = Color.FromArgb(205, 92, 92); 
} 
else 
{ 
    textBox_body.BackColor = Color.White; 
} 
+1

У нас есть сайт-сестра для обзора кода рабочего кода. –

+0

Чтобы уточнить, похоже, вы имеете в виду разные текстовые поля в вашем коде? Я почти собирался свернуть утверждения ветки в один, если ... иначе, если ... Но я думаю, что ответ Дарена помогает? – Eniola

ответ

17

Ваших простые ставки (! Никаких ухищрений не участвуют) будут:

SetBackColor(textBox_naam, 3, GOOD_COLOR, BAD_COLOR); 
SetBackColor(textBox_email, 5, GOOD_COLOR, BAD_COLOR); 
SetBackColor(textBox_body, 20, GOOD_COLOR, BAD_COLOR); 

с методом SetBackColor определен следующим образом:

public void SetBackColor(TextBox tb, int minLength, Color goodColor, Color badColor) 
{ 
    tb.BackColor = tb.Text.Length < minLength ? badColor : goodColor; 
} 
+3

Вы имеете в виду 3, 5, 20 – sinelaw

+0

@sinelaw, справа. обновлено. благодаря! –

+0

Учитывая, что «GOOD_COLOR» и «BAD_COLOR» одинаковы во всех трех случаях, нет никаких причин сделать их параметрами для функции. Просто передайте в поле и длину и пусть они являются константами внутри функции. – mjfgates

2

Вы можете использовать троичной, если потом еще оператор

textBox_naam.BackColor = textBox_naam.Text.Length < 3 ? Color.FromArgb(205, 92, 92) : Color.White; 

Это не какой-либо более эффективным, но будет использовать меньше строк кода.

2

Ну вы могли бы использовать сокращенный если заявления ...

Color other=Color.FromArgb(205,92,92); 
textBox_naam.BackColor=(textBox_naam.Text.Length<3?other:Color.White); 
textBox_email.BackColor=(textBox_email.Text.Length<5?other:Color.White); 
textBox_body.BackColor=(textBox_body.Text.Length<20?other:Color.White); 
0

У вас есть Reshaper установлен? Я думаю, вы найдете отличную (будущую) помощь, используя расширение JetBrain Reshaper для VS. Зависит от этого, это замечательно must-have инструмент для разработчиков .NET.

+0

Не могли бы вы поделиться тем, как расширение можно использовать в этом сценарии? – Eniola

Смежные вопросы