顶级目录结构如何揭示应用程序的用途?

时间:2013-04-14 14:44:50

标签: c# mvvm architecture

罗伯特·C·马丁(Robert C. Martin)在他关于清洁建筑的一次谈话中公然批评了现在相当标准的做事方式。 Robert C. Martin - Clean Architecture and Design

我理解为standard way是这样的:

solution
    - UI project
        - Models
        - Views
        - Controllers
        - Assets
    - Logic project
    - Data project
Martin在这里说,当你查看它的顶级目录结构时,应用程序应该立即显示它的用途...我想,任何人都可以提供这样的目录结构的例子,例如在使用MVVM模式作为传递机制时?如何以马丁描述的方式构建他的应用程序?

2 个答案:

答案 0 :(得分:2)

从我在您的示例中看到的我只能猜测它是一个ASP.NET MVC应用程序,我们需要查看LogicData项目以了解此应用程序是什么关于。

大多数时候,人们根据所使用的技术或框架组织所有目录结构。这来自于创建默认项目模板的方式(对于您的应用程序应该做什么一无所知,它们实际上不能为我们做更多的事情。)

现在,Robert C. Martin告诉我们的是,我们的顶级目录结构应该反映应用程序的功能,而不是它是如何构建的。我不确定在解决方案级别这样做是个好主意。但是,我始终建议您申请Domain项目,我们可以应用Domain Driver Design原则。

如果在此类项目中,您在根级别会看到以下文件夹:

Clients
Orders
Billing
Shipping
Promotions
...

你可能会猜到它是某种电子商务应用程序。如果您找到的文件夹类似ModelsDTOsExceptions,则必须更深入地了解目录结构。

我不喜欢在我的解决方案中有太多项目(如果可能的话,在10以下),所以我不会为我的系统的每个域对象创建一个项目。这就是为什么我认为项目的根本级别不是解决方案,我们应该把注意力集中在定义应用程序正在做什么上。

答案 1 :(得分:0)

他并不是在谈论一个如此放弃申请目的的结构。他说,在顶层应该有用例,这样你就可以快速查看它的作用以及需要更改代码的位置。我不认为他在谈论文件夹名称。更多信息可用性。