Tôi đang cố gắng cấu trúc lại một ứng dụng Winform hiện có để sử dụng mẫu MVP Passive View. Giao diện người dùng của ứng dụng, logic nghiệp vụ và mã lưu trữ dữ liệu đã được tự do xen kẽ trong nhiều năm. Có vẻ như nó bắt đầu với các lớp riêng biệt hoặc một người nào đó đã cố gắng tách nó thành các lớp. Trong mọi trường hợp, các ranh giới lớp không được tôn trọng.Tái cấu trúc WinForm ClickNCode thành MVP Passive View
Vì các biểu mẫu trực tiếp thao tác các đối tượng miền và nguồn dữ liệu (và ngược lại), nhiệm vụ đầu tiên của tôi là tạo đối tượng trình bày/bộ điều khiển và ủy nhiệm các trách nhiệm đó.
Ứng dụng này là ứng dụng .NET 1.1 và tôi đang phát triển trong VS.NET 2003 với một trình bổ sung sắp xếp lại khá hạn chế. Tôi đã sử dụng một máy phát điện thử nghiệm cho mã hiện có để tạo ra các thử nghiệm đơn vị tấm nồi hơi sau đó đã đi qua và bàn tay chỉnh sửa từng thử nghiệm. Cấp, điều này gió lên kiểm tra những gì mã không, không nhất thiết những gì nó giả sử để làm. Đối với các lớp học mới, tôi đang làm TDD.
Bất kỳ mẹo, tài nguyên, cạm bẫy nào để tìm ra với nỗ lực tái cấu trúc quy mô này?
Một vài nguồn Tôi đã có lúc xử lý của tôi:
- Bộ sưu tập sách lập trình; Refactoring, PEAA, welc
- Internet (rõ ràng)
- lượng lớn thức uống chứa caffeine
Cập nhật: Như một ví dụ những bước bạn sẽ có được để tắt chức năng này:
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();
}
Đây là:
private void OneOfManyFormEventHandlers(object sender, System.EventArgs e)
{
this.FormPresenter.DoSomething();
}
Bạn có đề nghị "Làm việc hiệu quả với Legacy Code"? Tôi chưa bao giờ nghe nói về nó trước đây. Chúc may mắn bằng cách này, tôi e rằng tôi không có bất kỳ lời khuyên hữu ích nào để cung cấp cho bạn –
Vâng, đó là một cuốn sách tuyệt vời. Nó cung cấp một số kỹ thuật rất hữu ích cho mã được thử nghiệm mà ban đầu không được thiết kế cho nó. Đối với tôi hữu ích nhất là * Trích xuất Giao diện * –