Я пытаюсь обернуть голову тем, как внедрить мой код: взять простую рутину и разделить ее на 5 или 6 методов в 3 или 4 классах.Что такое MVC-версия этого кода?
Я быстро подобрал три простых примера кода как я его сейчас пишу. Могла ли кто-нибудь конвертировать их в запутанную версию MVC/MVP?
Пример 1: фамилия является обязательным. Пометьте текстовое поле красным, если ничего не введено. Цвет его зеленый, если материал вводится:
private void txtLastname_TextChanged(object sender, EventArgs e)
{
//Lastname mandatory.
//Color pinkish if nothing entered. Greenish if entered.
if (txtLastname.Text.Trim() == "")
{
//Lastname is required, color pinkish
txtLastname.BackColor = ControlBad;
}
else
{
//Lastname entered, remove the coloring
txtLastname.BackColor = ControlGood;
}
}
Пример 2: первое имя не является обязательным, но попробовать, чтобы получить его. Мы добавим синеватый оттенок к этому «пытаются получить» поле:
private void txtFirstname_TextChanged(object sender, EventArgs e)
{
//Firstname can be blank.
//Hint them that they should *try* to get it with a bluish color.
//If they do enter stuff: it better be not all spaces.
if (txtFirstname.Text == "")
{
//Nothing there, hint it blue
txtFirstname.BackColor = ControlRequired;
}
else if (txtFirstname.Text.Trim() == "")
{
//They entered spaces - bad user!
txtFirstname.BackColor = ControlBad;
}
else
{
//Entered stuff, remove coloring
txtFirstname.BackColor = SystemColors.Window;
}
}
Пример 3возраст совершенно необязательно. Если возраст является введен, то лучше быть действительным:
private void txtAge_TextChanged(object sender, EventArgs e)
{
//Age is optional, but if entered it better be valid
int nAge = 0;
if (Int32.TryParse(txtAge.Text, out nAge))
{
//Valid integer entered
if (nAge < 0)
{
//Negative age? i don't think so
txtAge.BackColor = ControlBad;
}
else
{
//Valid age entered, remove coloring
txtAge.BackColor = SystemColors.Window;
}
}
else
{
//Whatever is in there: it's *not* a valid integer,
if (txtAge.Text == "")
{
//Blank is okay
txtAge.BackColor = SystemColors.Window;
}
else
{
//Not a valid age, bad user
txtAge.BackColor = ControlBad;
}
}
}
Каждый раз, когда я вижу MVC код, он выглядит почти как случайное расщепление кода в различные методы, классы и файлы. я не смог определить причину или образец их безумия. Без всякого понимания их почему это один из способов, это бессмысленно. И используя слова модели, вида, контроллера и презентаторов, как я должен знать, что это значит, не помогает.
Модель - это ваши данные.
В представлении показаны данные на экране.
Контроллер используется для выполнения пользователей действия
И апельсины вкуса оранжево.
Вот моя попытка разбить вещи, чтобы сделать код более трудным для подражания. Это где-то близко к MVC?
private void txtFirstname_TextChanged(object sender, EventArgs e)
{
FirstnameTextChangedHandler(sender, e);
}
private void FirstnameTextChangedHandler(sender, e)
{
string firstname = GetFirstname();
Color firstnameTextBoxColor = GetFirstnameTextBoxColor(firstname);
SetFirstNameTextBoxColor(firstnameTextBoxColor);
}
private string GetFirstname()
{
return txtFirstname.Text;
}
private Color GetFirstnameTextBoxColor(string firstname)
{
//Firstname can be blank.
//Hint them that they should *try* to get it with a bluish color.
//If they do enter stuff: it better be not all spaces.
if (firstname == "")
{
//Nothing there, hint it blue
return GetControlRequiredColor();
}
else if (firstname.Trim() == "")
{
//They entered spaces - bad user!
return GetControlBadColor();
}
else
{
//Entered stuff, remove coloring
return GetControlDefaultColor();
}
}
private Color GetControlRequiredColor()
{
return ControlRequired;
}
private Color GetControlBadColor()
{
return ControlBad;
}
private Color GetControlGoodColor()
{
return ControlGood;
}
//am i doin it rite
Я обфускал код, но он все еще совсем. Следующий шаг в обфускации MVC, я собираюсь, состоит в том, чтобы скрыть код в 3 или 4 разных файлах.
Это следующий шаг, который я не понимаю. Какое логическое разделение функций перемещается в другие классы?Может ли кто-то перевести мои 3 простых примера выше в полноценную обфускацию MVC?
Редактировать: не ASP/ASP.NET/Online. Притворись, что это на рабочем столе, карманном компьютере, поверхности, киоске. И притворись, что это язык агностик.
Вы принимаете издеваться? –
Я не уверен, что это значит. Это британский сленг? –
«Как довести до моего кода»; Разделение проблем и использование шаблонов там, где это необходимо, называют «хорошим» кодом, а не корпоративным кодом. – jfar