Tôi nhớ việc học VB4 và kéo một nút vào một biểu mẫu, nhấp đúp vào nút đó và nhập mã vào trình xử lý sự kiện mà tôi vừa được ban phước một cách kỳ diệu. Đến từ QBASIC, tôi đã rất phấn khích với chữ "V" trong "VB", nhà thiết kế hình ảnh thực sự là điều tuyệt vời nhất kể từ khi cắt lát bánh mì.
Tất nhiên bạn có thể làm tất cả những điều đó theo lập trình nhưng phép thuật của chữ "V" rất hấp dẫn, bạn không thể không kéo nút đó. Chúng tôi được khuyến khích đi theo con đường đó.
Nhưng sau đó vài năm, tôi bắt đầu tìm hiểu về C # và khung .net và bị mê hoặc bởi cách mọi thứ tôi nghĩ tôi biết vừa mới ra khỏi cửa sổ. Có rất nhiều phép thuật đang diễn ra trong VB6, điều đó hoàn toàn được tiết lộ trong .net: lấy các hàm tạo và InitializeComponents
phương thức làm ví dụ. Sau này, bạn sẽ tìm thấy tất cả các phiên bản điều khiển mà bạn đã kéo từ hộp công cụ, tất cả các sự kiện bạn đã đăng ký và các thuộc tính bạn đã đặt trong trình thiết kế.
Và nó ổn ... tôi đoán thế. Chỉ là, tôi cảm thấy như mình không "sở hữu" những gì đang diễn ra, mã này mà tôi chỉ có thể sửa đổi thông qua nhà thiết kế làm phiền tôi. Mỗi khi bạn sao chép một nút có chữ "Ok" từ dạng này sang dạng khác (đôi khi cùng với anh trai của nó là "Hủy"), bạn thực sự đang sao chép mã, và đó có phải là một tội lỗi không? DRY, đừng lặp lại chính mình, Giáo hoàng nói .
Các tôn giáo và trường phái tư tưởng sang một bên, trong tất cả các khách quan, chúng ta không nên lấy các hình thức từ các hình thức cơ sở thay vào đó và có nút "Ok" (và tất cả bạn bè của nó) sống ở dạng cơ sở? Một cái gì đó giống như FormBase
từ đó xuất phát a DialogFormBase
; tất cả các lớp được tạo trong thời gian ngắn ... bằng cách gõ mã. Các nút được tạo tùy thuộc vào cách lớp được tạo ra (ví dụ: đối số enum của hàm tạo xác định nút nào sẽ được tạo), các điều khiển được đặt bên trong một sự sắp xếp của các bảng phân chia và bảng bố trí luồng, được đưa vào biểu mẫu nhưContent
phù hợp với bảng nội dung chính. Đây không phải là những gì ASP.net làm với các trang chính và giữ chỗ nội dung? Tôi đã lấy được một biểu mẫu khi tôi cần một "trang chính" mới, nhưng "trang chính" mới này vẫn xuất phát từ một lớp biểu mẫu cơ sở để hình ảnh nhất quán trên toàn bộ ứng dụng.
Đối với tôi đó là nhiều tái sử dụng mã hơn bất cứ thứ gì khác mà tôi từng thực hiện với các nhà thiết kế trong WinForms, và nó thậm chí còn không chăm chỉ, và mã không lộn xộn với một phương pháp 200 dòng mà tôi không kiểm soát được, tôi có thể Đặt bình luận ở nơi tôi thích, họ sẽ không bị ghi đè bởi nhà thiết kế. Tôi đoán đó chỉ là vấn đề về hoa văn và kiến trúc, đó là điều đã đưa tôi đến liên kết này: Thiết kế tốt nhất cho các biểu mẫu Windows sẽ chia sẻ chức năng chung , nơi tôi nhận ra mình đã phát hiện ra, ngoại trừ câu trả lời ở đó, gợi ý chính xác những gì tôi làm, nhưng nó khuyên chống lại sự kế thừa hình thức vì những cân nhắc của nhà thiết kế. Đó là phần tôi không nhận được .bởi vì các cân nhắc về cấu trúc mã, đặc biệt là liên quan đến kế thừa hình thức và kiểm soát, mà tôi thấy không có lý do gì để tránh ngoài việc nó phá vỡ nhà thiết kế .
Tất cả chúng ta không thể lười biếng, vậy tôi còn thiếu phần nào?