2013-04-14 25 views
6

Robert C. Martin trong một trong những cuộc đàm phán của ông về kiến ​​trúc sạch công khai chỉ trích cách tiêu chuẩn khá của việc làm ngày nay. Robert C. Martin - Clean Architecture and DesignCấu trúc thư mục cấp cao nhất có thể tiết lộ mục đích của ứng dụng như thế nào?

Những gì tôi hiểu như standard way là một cái gì đó như thế này:

solution 
    - UI project 
     - Models 
     - Views 
     - Controllers 
     - Assets 
    - Logic project 
    - Data project 

Martin ở đây cho biết, việc áp dụng nên tiết lộ mục đích của nó ngay lập tức khi bạn nhìn vào cấu trúc thư mục cấp cao nhất của nó ... Tôi tự hỏi, bất cứ ai có thể cung cấp một ví dụ về cấu trúc thư mục như vậy, ví dụ trong khi sử dụng mô hình MVVM như một cơ chế phân phối? Làm thế nào một người có thể cấu trúc ứng dụng của mình theo cách Martin mô tả?

Trả lời

2

Từ những gì tôi thấy trong ví dụ của bạn, tôi chỉ có thể đoán rằng nó là một ứng dụng ASP.NET MVC, chúng ta cần xem xét các dự án Logic hoặc Data để hiểu ứng dụng này là gì.

Hầu hết mọi người đều tổ chức tất cả cấu trúc thư mục của họ dựa trên công nghệ hoặc khung được sử dụng. Điều này xuất phát từ cách mẫu dự án mặc định được tạo ra (không biết gì về những gì ứng dụng của bạn được cho là làm chúng thực sự không thể làm nhiều hơn thế cho chúng ta).

Bây giờ, điều mà Robert C. Martin nói với chúng tôi là cấu trúc thư mục cấp cao nhất của chúng ta nên phản ánh về những gì ứng dụng thực hiện và không phải cách nó được xây dựng. Tôi không chắc đó là một ý tưởng hay để làm điều đó ở cấp độ giải pháp. Tuy nhiên, tôi luôn khuyên bạn nên có một dự án Domain là chúng tôi có thể áp dụng nguyên tắc Domain Driver Design.

Nếu trong ví dụ miền dự án mà bạn nhìn thấy ở cấp độ gốc các thư mục sau:

Clients 
Orders 
Billing 
Shipping 
Promotions 
... 

Bạn có thể đoán nó là một số loại ứng dụng thương mại điện tử. Bạn sẽ phải đi sâu hơn trong cấu trúc thư mục nếu các thư mục bạn đã tìm thấy giống như Models, DTOs hoặc Exceptions.

Tôi không muốn có quá nhiều dự án trong giải pháp của mình (dưới 10 nếu có thể) nên tôi không đi và tạo một dự án cho mỗi đối tượng miền của hệ thống của tôi. Đây là lý do tại sao tôi nghĩ mức độ gốc của các dự án không phải là giải pháp là chúng ta nên tập trung sự chú ý vào việc xác định ứng dụng đang làm gì.

+0

Vâng, đây là một câu trả lời mà tôi đã hy vọng. Cảm ơn bạn, chắc chắn +1. – walther

0

Anh ấy không nói về cấu trúc cho mục đích ứng dụng như vậy. Ông nói, ở cấp cao nhất nên có trường hợp sử dụng để bạn có thể nhanh chóng xem những gì nó làm và nơi thay đổi mã được yêu cầu. Tôi không nghĩ anh ta đang nói về tên thư mục. Thông tin thêm khả dụng.

+0

'Mở cấp cao nhất và có tất cả các trường hợp sử dụng ở đó, và sau đó bạn nói 'oh nhưng tôi cần phải thay đổi một trong những trường hợp sử dụng đó, cái nào, aaah, cái này ở đây, bởi vì nó được đặt tên'. Làm thế nào để bạn phải thay đổi mã ngay bây giờ? Bạn phải tìm ra url nào kích hoạt bộ điều khiển cụ thể nào và sau đó bạn phải khai thác trong bộ điều khiển và ... '. Tôi hiểu rằng anh ấy nói về một kiến ​​trúc tốt như một tổng thể, nhưng anh ấy cũng nhấn mạnh tầm quan trọng của một cấu trúc thư mục tốt. Tôi chỉ muốn xem một ví dụ về một ứng dụng có cấu trúc như thế, ẩn giấu cơ chế phân phối của nó và cho thấy mục đích của nó. – walther

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