Я пытаюсь обдумать, как усовершенствовать свой код: взять простую процедуру и разделить ее на 5 или 6 методов в 3 или 4 классах.
я быстро нашел три простых примера кода как я сейчас его пишу . Может кто-нибудь преобразовать их в запутанную версию 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 age совершенно необязательно. Если введен возраст , то он будет действительным:
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. Представьте, что это на рабочем столе, наладонник, поверхность, киоск. И притворись, что это не зависит от языка.