Khi phát triển một hệ thống hoặc ứng dụng mà bạn dự định sử dụng với một khung nhất định, cách tốt nhất là thiết kế hệ thống mà không có khung, hoặc tốt hơn là thiết kế hệ thống với tư duy "tốt, khung sẽ có thời gian dễ dàng hơn Với cái này".
Khi phát triển một hệ thống hoặc ứng dụng mà bạn dự định sử dụng với một khung nhất định, cách tốt nhất là thiết kế hệ thống mà không có khung, hoặc tốt hơn là thiết kế hệ thống với tư duy "tốt, khung sẽ có thời gian dễ dàng hơn Với cái này".
Câu trả lời:
Thiết kế của bạn phải đáp ứng nhu cầu của khách hàng càng sát càng tốt. Hãy nhớ rằng thiết kế bao gồm những điều nhỏ như:
Không ai trong số những điều này nên được quyết định bởi khuôn khổ. Nếu rõ ràng rằng bạn sẽ chiến đấu với khung của mình để hoàn thành các mục tiêu này, thì bạn chọn một khung mới sẽ giúp bạn hoàn thành các mục tiêu đó trước khi bạn bắt đầu viết mã.
Khi bạn đã chọn một bộ công cụ thích hợp (khung là một công cụ), thì tôi khuyên bạn nên sử dụng các công cụ theo cách chúng được thiết kế để sử dụng. Bạn càng đi chệch khỏi thiết kế khung, bạn càng tăng thời gian học tập cho nhóm của mình và khả năng xảy ra sự cố sẽ càng cao.
Nói ngắn gọn
Suy nghĩ thêm:
Sau hơn 20 năm công nghệ phần mềm và sử dụng một số khung công tác, tôi đã học được một vài bài học. Tất cả các khung là một con dao hai lưỡi: cả hai đều hạn chế và cho phép. Vấn đề với việc quyết định khuôn khổ của bạn trước khi bạn nhìn vào 3 điều tôi đã đề cập ở trên là bạn có thể đang làm tổn hại đến trải nghiệm người dùng tốt cho một người tầm thường (tốt nhất). Hoặc bạn có thể bị buộc phải đi chệch khỏi thiết kế khung để thực hiện một số chức năng cụ thể.
Các khung ảnh hưởng một cách tự nhiên đến việc thiết kế các mô-đun và hệ thống con cụ thể (như giao diện người dùng GUI). Như câu trả lời khác đã đề cập, bạn sẽ có một khoảng thời gian khó khăn nếu bạn thấy mình chiến đấu chống lại (các) khuôn khổ đã chọn.
Tuy nhiên, rộng hơn, bạn nên tránh để cho bất kỳ khuôn khổ hoặc công nghệ nào ra lệnh hoặc điều khiển "bức tranh lớn" của kiến trúc hệ thống tổng thể của bạn. Hầu hết các khung ứng dụng cho mục đích chung không khuyến khích điều này, vì vậy nếu bạn thấy mình viết toàn bộ hệ thống của mình xung quanh một khung thì có lẽ bạn đang làm điều gì đó mà các tác giả của khung đó không có ý định.
Bạn có thể sẽ sử dụng nhiều khung khác nhau để giải quyết các vấn đề khác nhau; khi hệ thống của bạn trở nên phức tạp hơn, bạn cần cẩn thận để không xây dựng The Big Ball Of Mud . Nếu có thể, hãy giữ cho hệ thống của bạn được mô đun hóa và kết nối lỏng lẻo. Một số khung công tác có thể được giữ tốt hơn đằng sau sự trừu tượng bằng cách viết các trình bao bọc và bộ điều hợp 'ẩn' các luồng công việc dành riêng cho Khung khỏi các thành phần khác. Bộ công cụ GUI có xu hướng chỉ phục vụ chức năng GUI phía trước, vì vậy các mô-đun GUI đó nên được tránh xa phần còn lại của hệ thống.
Các khung công tác chung (như khung UI, khung lớp dữ liệu, v.v.) không tồn tại để quy định kiến trúc hoàn chỉnh của hệ thống của bạn - nhiều nhất họ có thể quy định thiết kế của một thành phần hoặc mô-đun; ví dụ, một số công nghệ GUI hướng đến các mẫu MV * cụ thể.
Kiến trúc tổng thể của hệ thống của bạn nên được điều khiển chủ yếu bởi các yêu cầu kinh doanh của bạn . Bạn có thể thấy mình dựa nhiều vào một công cụ cụ thể (ví dụ: công cụ phần mềm trung gian nhắn tin hoặc khung ORM) để gắn kết mọi thứ lại với nhau, nhưng nếu bạn đã gói gọn khung trong một bản tóm tắt, chẳng hạn như lớp 'dịch vụ', bạn Sẽ ít có khả năng thấy mình bị hạn chế bởi khuôn khổ đó khi bạn gặp phải những hạn chế của nó.
Cố gắng ghi nhớ những điều sau đây cho thiết kế bức tranh lớn của bạn:
Có, bạn nên bám sát nhất có thể vào những gì khung "bảo" bạn làm.
Lý do đơn giản là bạn càng bám sát cách "suy nghĩ" của khung, bạn càng dễ nói chuyện với các nhà phát triển khác về các vấn đề / ý tưởng của bạn cũng sử dụng khung đó.
Bạn tăng khả năng tương tác và dễ sử dụng cho những người khác sử dụng nó sau này, bạn sẽ hiểu và kết hợp các hướng dẫn hoặc giải pháp chung tốt hơn nếu bạn tuân thủ triết lý cơ bản của bất cứ điều gì bạn đang sử dụng.
Lý do chính đáng duy nhất tôi có thể nghĩ về lý do tại sao bạn sẽ "phá vỡ" khung là bạn hoàn toàn cần thứ gì đó không thể cung cấp cho cấu hình / ứng dụng nguyên tắc "mặc định" của nó. Nhưng sau đó, nó có thể không phải là khuôn khổ phù hợp để bắt đầu.
Về cơ bản, điều này có thể áp dụng cho các quyết định khác là tốt. Bạn nên sử dụng ngôn ngữ bạn đang sử dụng gần như dự định sẽ được sử dụng, bởi vì nó giúp mọi việc dễ dàng hơn nếu bạn nói cùng ngôn ngữ với mọi người khác.