Mặc dù tôi chưa bao giờ giao bất cứ thứ gì khi sử dụng Smalltalk, nhưng thời gian ngắn ngủi của tôi chơi với nó chắc chắn đã để lại dấu ấn. Cách duy nhất để mô tả trải nghiệm là MVC theo đúng nghĩa của nó. Về cơ bản, tất cả các công việc nặng nề cho ứng dụng của bạn đều được thực hiện trong các đối tượng kinh doanh (hoặc mô hình miền nếu bạn có khuynh hướng như vậy). Các điều khiển tiêu chuẩn được ràng buộc với các đối tượng kinh doanh theo một cách nào đó. Ví dụ: một hộp văn bản được ánh xạ tới trường của một đối tượng (chính trường đó là một đối tượng để dễ thực hiện). Một nút sẽ ánh xạ tới một phương thức. Tất cả điều này được thực hiện với một API rất đơn giản và tự nhiên. Chúng ta không phải suy nghĩ về các đối tượng ràng buộc, vv Nó chỉ hoạt động.
Tuy nhiên, trong nhiều ngôn ngữ và API mới hơn, bạn buộc phải suy nghĩ từ bên ngoài. Đầu tiên với C ++ và MFC, và bây giờ với C # và WPF, Microsoft đã khiến thế giới nhà phát triển bị cuốn hút vào các trình xây dựng GUI nơi bạn xây dựng ứng dụng của mình bằng cách triển khai trình xử lý sự kiện . Phát triển Java Swing không quá khác biệt, chỉ có bạn đang viết mã để khởi tạo các điều khiển trên biểu mẫu. Đối với một số dự án, thậm chí có thể không bao giờ có mô hình miền - chỉ xử lý sự kiện. Tôi đã ở trong và xung quanh mô hình này cho hầu hết người chăm sóc của tôi.
Mỗi cách buộc bạn phải suy nghĩ khác nhau. Với phương pháp Smalltalk, tên miền của bạn thông minh trong khi GUI của bạn bị câm. Với cách tiếp cận VisualStudio mặc định, GUI của bạn thông minh trong khi mô hình miền của bạn (nếu nó tồn tại) khá thiếu máu.
Nhiều nhà phát triển mà tôi làm việc nhìn thấy giá trị trong cách tiếp cận Smalltalk và cố gắng đánh bóng cách tiếp cận đó vào môi trường VisualStudio. WPF có một số tính năng ràng buộc động làm cho nó có thể; nhưng có những hạn chế. Chắc chắn một số mã thuộc mô hình miền kết thúc trong các lớp GUI.
Vì vậy, cách nào bạn thiết kế / phát triển mã của bạn? Tại sao?
- GUI đầu tiên. Tương tác người dùng là tối quan trọng.
- Tên miền đầu tiên. Tôi cần đảm bảo hệ thống chính xác trước khi chúng tôi đặt UI lên nó.
Có những ưu và nhược điểm cho cả hai cách tiếp cận. Mô hình miền phù hợp ở đó với các thánh đường pha lê và chiếc bánh trên bầu trời. GUI phù hợp với đó nhanh chóng và bẩn (đôi khi thực sự bẩn).
Và đối với một phần thưởng bổ sung: Làm thế nào để bạn chắc chắn rằng mã có thể được duy trì?