多个项目和一个解决方案的好处我在企业工作,我们在解决方案项目中使用多个项目,用于UI、业务逻辑和数据访问、数据库和另一个用于打印。...但现在我在新企业工作,经理告诉我我不必做所有这些项目,只需将它们分成解决方案的一个项目中的单独目录即可。我只是想知道我是否必须说服他使用多个项目!我实际上同意你的经理。多个项目意味着多个程序集、大量重复的程序集以及通常较慢的编译时间。如果你拥有多个项目的唯一原因是为了改善组织,那你就错了。使用文件夹同样有效。拥有不同程序集的一些正当理由是:我对接受的答案感到非常惊讶。我在这两种环境中都工作过,并且发现多个项目总体上是有益的。实际的决定仍然取决于您的团队(如果项目不会阻止您实现目标,那就足够了)。我依赖UncleBob的OOD原则进行包管理。这些不是很出名(特别是与他的SOLID原则相比,他们的课堂设计),但它们是明智的。取自UncleBob的OOD原则前三个包原则是关于包内聚的,它告诉我们在包中放什么:最后三个原则是关于包之间的耦合,并讨论评估系统包结构的指标。这符合我的个人经验,在我的经验中,项目较少的倾向往往会导致问题:当然,多个项目也会有问题:最后,.NET中很少使用的功能是单个.DLL可以包含多个模块(实际上它是共享一组元数据的几个程序集)。我不建议使用它,但了解它的工作原理很有趣:http://www.codeproject.com/Articles/9364/Merging-NET-assemblies-using-ILMerge我找到了一篇关于结构(项目或文件夹)的文章)是一篇关于应用程序重要性的有趣文章。我会说当你打开一个解决方案并看到一个项目列表时,这些名称告诉我应用程序是如何构建的。etc(MVP设计模式示例)BLL(业务)DAL(持久化(映射,约定等))webPL(表现层)测试(当然测试需要进入单独的项目)目录结构是你代码的基础"正如任何设计师都会告诉您的那样,这是设计过程中最重要的第一步。创作形式的前几笔承载着其余部分的命运。-ChristopherAlexander(ChristopherAlexander是一名架构师。如果不是作为一名程序员,他影响了许多对编程有很多思考的人。他早期的著作《PatternLanguages》是设计模式运动的最初灵感。他一直在思考关于如何构建美丽的事物,这些思考似乎也主要适用于软件构建。)在接受CBC电台采访时,Alexander讲述了以下故事(此处解释):“我和我的一个学生一起工作。他要建造一些东西。他根本不知道该怎么做。所以我和他坐下来,我说:听着,首先弄清楚什么是最重要的。先把它做好。直接放在你的脑海里。放轻松.不要操之过急,想一想,当你觉得自己找到了,当你心中毫无疑问这确实是最重要的事情时,那就去做最重要的事情。当你做出最重要的事情,问问自己是否可以让它变得更漂亮。不管你能不能做得更好,都不要胡说八道,把它直接记在脑子里。当你这样做的时候,你觉得自己不能做得更好,然后找到下一个最重要的事情”。创建它的整体形式的应用程序中的第一笔画是什么?它是目录结构。目录结构是第一件事a程序员在浏览源码时遇到,一切都源于它,一切都依赖于它。这显然是源码最重要的方面之一。考虑到程序员遇到不同目录结构的React时的差异。对于逐个函数的风格,应用程序程序员可能会这样想:“我明白了。它一次列出应用程序的所有顶级功能。非常好。““让我们来看看。我想知道这个东西在哪里……哦,在这儿。我需要的其他一切都在这里,都在一个地方。非常好。但是,对于逐层样式,应用程序程序员的想法可能更像是:“这些目录什么也没告诉我。”这个应用程序有多少个功能?打我。它看起来与其他所有功能完全一样。这没有任何区别。伟大的。让我们再来一次……”“嗯。我想知道这个项目位于何处...我猜它的各个部分都在应用程序上,遍布这些目录。我真的拥有我需要的所有物品吗?我想我们以后会知道的。”“不知道现在还沿用这个命名规范吗。如果没有,我将不得不在另一个目录中查找它。”“哇,看看这个单个目录的大小……谢谢。由于关注点分离,其他域中的逐层分组不适用于资源。这将极大地帮助类/对象之间的意外引用。对于WPF/Silverlight程序员,考虑MVVM设计模式:将ViewModel和Views分成两个不同的项目将确保View对象不被引用到ViewModel中。另一点是构建时间可能会减少,因为整个解决方案不是每次都重新编译。对你的经理来说可能是一个很好的论据(但根据你的解决方案的规模,这个假设可能是错误的)。如果您只有一个应用程序,那么一个项目就可以了。但我认为这是非常罕见的。大多数时候,您将拥有多个应用程序,因此通过拥有多个项目,您可以在应用程序之间重用组件,而无需进行诸如共享源文件等骇人听闻的事情。您可以根据需要使用不同的项目如果它对您有用并且您需要了解更多C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
