Я пытаюсь реорганизовать существующее приложение Winform для использования шаблона пассивного просмотра MVP. Пользовательский интерфейс приложения, бизнес-логика и код хранения данных свободно перемешивались годами. Похоже, он либо начинался с отдельных слоев, либо кто-то пытался разделить его на слои. В любом случае границы слоя не были соблюдены.
Поскольку формы напрямую управляют объектами домена и источником данных (и наоборот), моя первая задача - создать объекты презентатора / контроллера и делегировать эти обязанности.
Приложение представляет собой приложение .NET 1.1, и я занимаюсь разработкой в VS.NET 2003 с довольно ограниченной надстройкой рефакторинга. Я использовал генератор тестов для существующего кода, чтобы создать тесты блоков котельной плиты, затем прошел и вручную отредактировал каждый тест. Конечно, это завершает тестирование того, что делает код, а не обязательно того, что предполагается делать. Для новых классов я делаю TDD.
Какие-либо советы, ресурсы, подводные камни, на которые стоит обратить внимание при проведении рефакторинга такого масштаба?
Несколько ресурсов, которые у меня уже есть:
- Коллекция книг по программированию; Рефакторинг , PEAA , WELC
- Интернет (очевидно)
- Большое количество напитков с кофеином
Обновление:
Например, какие шаги вы бы предприняли, чтобы включить это:
private void OneOfManyFormEventHandlers(object sender, System.EventArgs e)
{
string LocalVariable;
decimal AnotherLocal;
if (!this._SomeDomainObject.SomeMethod(ClassField, out LocalVariable, out AnotherLocal))
{
MessageBox.Show("An error occurred calling method");
return;
}
this.FormControl.Value = LocalVariable;
this.AnotherFormContorl.Value = AnotherLocal;
this.AnotherPrivateMethod();
}
В это:
private void OneOfManyFormEventHandlers(object sender, System.EventArgs e)
{
this.FormPresenter.DoSomething();
}