2008-10-07 22 views
5

Nói chung, MVC frameeworks có một cấu trúc trông giống như sau:Theo khuôn khổ MVC, cấu trúc thư mục nào được các nhà phát triển khác mong đợi?

/models 
/views 
/controllers 
/utils 

Tuy nhiên, trong một bộ ứng dụng web, tôi đã quyết định rằng kết tụ tất cả các models, views, và bộ điều khiển cùng có lẽ sẽ không phải là tốt nhất cho rõ ràng, trừ khi tôi xử lý hệ thống như một ứng dụng thay vì một bộ ứng dụng. Tuy nhiên, một số thứ liên kết mọi "ứng dụng" với nhau, như khái niệm về người dùng và vai trò người dùng.

Vì vậy, tôi có ba giải pháp khả thi:

(1) Hãy làm những gì tôi không thực sự muốn làm, và giữ cho tất cả các mô hình, xem và điều khiển với nhau, bất kể ứng dụng nào nó thuộc về. Điều này được coi là một ứng dụng đơn, vì chúng được gắn với nhau bởi một số chủ đề phổ biến, bao gồm cả người dùng.

(2) Nhóm mã theo ứng dụng.

/app1 
    /models 
    /views 
    /controllers 
    /utils 
/app2 
    /models 
    /views 
    /controllers 
    /utils 

(3) Nhóm mã theo loại, cho phép chia sẻ mã tiện ích trong tất cả các ứng dụng.

/models 
    /app1 
    /app2 
/views 
    /app1 
    /app2 
/controllers 
    /app1 
    /app2 
/utils 

Có tùy chọn nào tôi đã bỏ lỡ không? Điều gì sẽ là kế hoạch hợp lý nhất cho các nhà phát triển trong tương lai? Cá nhân tôi thích 2 và 3, nhưng có lẽ hầu hết mọi người mong đợi 1.

Trả lời

5

Dường như 2) sẽ là lựa chọn tốt nhất của bạn, giả sử bạn muốn tách một số ứng dụng. Bạn cũng có thể có thư mục "/ common" ở cấp "/ app #" cho các tài nguyên được chia sẻ trên tất cả các ứng dụng ... như lớp tiện ích được chia sẻ hoặc bất kỳ thứ gì.

1

Nếu ứng dụng của bạn chia sẻ dữ liệu, có thể hợp lý với tôi để nhóm các mô hình lại với nhau.

Tuy nhiên, đối với các chế độ xem và bộ điều khiển, điều này có thể có ý nghĩa hơn để giữ riêng biệt chúng, vì tôi giả sử chúng có logic và bản trình bày kinh doanh riêng biệt.

Hơn nữa, nếu ứng dụng của bạn được giữ riêng trong điều khiển phiên bản (bạn đang sử dụng điều khiển phiên bản, phải không? :), điều đó khiến tùy chọn đầu tiên hoặc thứ ba khó triển khai.

Vì vậy, tất cả mọi thứ được xem xét, tôi có thể tách các ứng dụng ở cấp cao nhất, như trong ví dụ thứ hai của bạn.

1

Tôi thường là mã nhóm theo tính năng, vì vậy trong trường hợp nhóm của bạn theo ứng dụng sẽ có ý nghĩa nhất đối với tôi. Lý do là nếu tôi muốn làm việc trên một tính năng cụ thể, tôi không cần phải tìm kiếm thông qua ba thư mục riêng biệt tìm kiếm các thành phần tôi cần. Nếu bạn nhóm theo tính năng cấp cao, bạn biết mọi thứ bạn cần là cùng nhau.

6

2 là một khởi đầu tốt. Bạn nên xem xét việc có một thư mục phổ biến, trong đó bạn có thể lưu trữ bất kỳ mô hình, lượt xem và utils phổ biến nào được sử dụng bởi tất cả các ứng dụng trong bộ ứng dụng.

/app1 
    /models 
    /views 
    /controllers 
    /utils 
/app2 
    /models 
    /views 
    /controllers 
    /utils 
/common 
    /models 
    /views 
    /utils 
+0

Điều này chắc chắn trông giống như giải pháp thiết thực nhất. – CodeVirtuoso

Các vấn đề liên quan