Sau khi trải qua hai năm cuối cùng với tư cách là nhà phát triển C#/WPF/MVVM, gần đây tôi đã tiếp quản dự án VB/Winform tại một công ty mới.Khởi tạo lớp thích hợp trong C# và Winforms
Tôi đã chuyển đổi thành công dự án thành C#. Tôi đã làm một số lượng lớn các nghiên cứu, cố gắng tìm ra các phương pháp tốt nhất cho dự án này, nhưng tôi đang cố gắng tìm ra chính xác bao nhiêu refactoring và tái cấu hình để làm.
Vấn đề của tôi là vấn đề này: nhà phát triển trước đã tạo hai lớp tĩnh lớn. Có hơn 30 biểu mẫu được sử dụng cho nhiều tác vụ khác nhau. Mỗi hình thức được gọi từ một sự kiện được điều khiển bởi một nút bấm vào một loại "menu chính" loại màn hình. Khi chương trình khởi tạo, một hàm từ một trong những lớp lớn này được gọi là instantiates EVERY form. Ngoài ra còn có một số lượng đáng kinh ngạc của statics và hằng số.
Tôi đã xóa các hằng số và tạo một lớp cụ thể cho chúng. Tôi đang chia nhỏ các lớp học lớn thành các lớp nhỏ hơn, dễ quản lý hơn (và có trách nhiệm cụ thể hơn), nhưng tôi đã có hàm khởi tạo cực kỳ lớn này để khởi tạo tất cả các dạng này.
Vì vậy, các câu hỏi của tôi (cuối cùng) là: Những gì tôi đã viết trên một cơn ác mộng tài nguyên? Hay, đây có phải là kiểu thiết kế VB/Winform bình thường mà tôi nên giữ không? Tôi có nên viết lại điều này sao cho mỗi biểu mẫu/lớp được khởi tạo khi nút gọi biểu mẫu đó được nhấp vào, vì vậy nó có thể xử lý khi đóng?
Cảm ơn bạn đã chỉ đường cho bạn. Nếu tôi có thể cung cấp thêm thông tin để làm cho thông tin cụ thể hơn, vui lòng nhận xét và tôi sẽ chỉnh sửa.
Cảm ơn chúa dev này đã được thay thế. – Phiter
Âm thanh đơn giản như thiết kế kém với tôi. Tôi có thể hiểu ngay lập tức một vài hình thức, nhưng không phải mọi hình thức. Chúng chỉ nên được khởi tạo khi chúng sẵn sàng để sử dụng IMO.Trừ khi bạn đang giữ một biểu mẫu chính sẵn sàng để được hiển thị sau khi biểu mẫu đăng nhập đã hoàn tất. Thậm chí sau đó, tôi vẫn không làm theo cách đó. Vì vậy, có, viết nó theo cách của bạn và nhanh chóng chỉ theo yêu cầu. Nó tốt hơn nhiều. – ManoDestra
Quy tắc ngón tay cái là (bạn sẽ nghe thấy rất nhiều về các kết nối db, nhưng nó thực sự áp dụng cho hầu như tất cả các lớp) khởi tạo càng muộn càng tốt, bỏ càng sớm càng tốt. Điều này đảm bảo rằng GC có thể hoàn thành các đối tượng của bạn một cách hiệu quả. Các vật thể sống lâu sẽ rơi vào các vòng cuối của quá trình hoàn thành GC, có thể mất một lượng thời gian đáng kể. – Kevin