C#学习教程:多个项目和一个解决方案的好处分享


多个项目和一个解决方案的好处

我在企业工作,我们在解决方案项目中使用多个项目,用于UI,业务逻辑和数据访问,数据库和另一个用于打印….但现在我在新的企业,经理告诉我,我不做不得不做所有这个项目,只需要在解决方案的一个项目中将它们分成单独的目录。

我只是想知道我是否必须说服他使用多个项目!

我实际上同意你的经理。

多个项目意味着多个程序集,大量复制程序集,以及通常较慢的编译时间。

如果您拥有多个项目的唯一理由是改进组织,那么您做错了。 使用文件夹同样有效。

拥有不同程序集的一些正当理由是:

我对接受的答案感到非常惊讶。 我曾在两种环境中工作,并且发现多个项目总体上是有益的。 实际的决定仍然取决于你的团队(如果一个项目没有阻止你实现你的目标,那就足够了)。

我依靠Bob叔叔关于包管理的OOD原则 。 这些并不是很为人所知(特别是与他的SOLID原则相比,他们的课堂设计),但它们是明智的。

取自鲍勃叔叔的OOD原则

前三个包的原则是关于包内聚,它们告诉我们在包内放什么:

最后三个原则是关于包之间的耦合,并讨论评估系统包结构的指标。

这符合我个人的经验,在这些经验中,倾向于减少项目经常导致我的经验出现问题:

当然,多个项目也有问题:

最后,.NET中一个很少使用的function是单个.DLL可以包含多个模块(实际上它是几个共享一组元数据的程序集)。 我不建议使用它,但有趣的是知道它是如何工作的: http : //www.codeproject.com/Articles/9364/Merging-NET-assemblies-using-ILMerge

我发现了一篇关于结构(项目或文件夹)在应用程序中的重要性的有趣文章。 我会说,当你打开一个解决方案并看到一个项目列表时,这些名称会告诉我应用程序是如何构建的。 等等

(MVP设计模式示例)

  1. BLL(业务)
  2. DAL(持久性(映射,约定等))
  3. 卷筒纸
  4. PL(表示层)
  5. 测试(当然测试需要进入单独的项目)

目录结构是您的代码的基础

“正如任何设计师都会告诉你的那样,这是设计过程中最重要的第一步。创造forms的前几个笔画在其中承载着其余部分的命运。” – 克里斯托弗亚历山大

(克里斯托弗·亚历山大是一名建筑师。如果没有作为程序员,他会影响许多对编程有很多想法的人。他的早期着作“模式语言”是设计模式运动的最初灵感。他一直在思考如何构建美丽的东西,这些反思似乎也很大程度上适用于软件构建。)

在接受CBC电台采访时,亚历山大讲述了以下故事(在此解释):“我和我的一个学生一起工作。他很难建立一些东西。他根本就不知道该怎么办。所以我和他坐在一起,我说:听着,首先弄清楚最重要的是什么。先把它弄好。把它直接放在你的脑海里。慢慢来。不要太仓促。考虑一下一段时间。当你觉得你已经找到它时,当你心中毫无疑问它确实是最重要的事情时,那么就去做最重要的事情。当你做出最重要的事情时,问问自己如果你能让它变得更美丽的话。剪掉废话,直接把它弄到脑袋里,如果你能做得更好或者没有。当这样做,你觉得你不能做得更好,那么找到下一个最重要的事情“。

应用程序中的第一个笔划是什么,它创建了它的整体forms? 它是目录结构。 目录结构是程序员在浏览源代码时遇到的第一件事。 一切都从它流出。 一切都取决于它。 这显然是源代码最重要的方面之一。

考虑程序员遇到不同目录结构时的不同反应。 对于逐个function的样式,应用程序员的想法可能是这样的:

“我明白了。它一次性列出了应用程序的所有顶级function。很好。” “让我们看看。我想知道这个项目的位置……哦,这就是它。而我所需要的其他一切也就在这里,所有这些都在同一个地方。非常好。” 然而,对于逐层的风格,应用程序员的想法可能更像是这样:“这些目录什么也没告诉我。这个应用程序中有多少function?打败我。它看起来与其他所有function完全相同。没有任何区别。很棒。我们再来一次……“”嗯。我想知道这个项目的位置……我猜它的各个部分都在应用程序上,遍布所有这些目录。我真的有我需要的所有物品?我想我们以后会发现的。“ “我想知道这个命名约定是否仍然被遵循。如果没有,我将不得不在另一个目录中查找它。” “哇,你看看这个单一目录的大小……谢谢。” 其他域中的逐层分组无效

资源

因为关注点分离。 这将极大地帮助类/对象之间的意外引用。

对于WPF / Silverlight程序员,请考虑MVVM设计模式:将ViewModel和Views分成两个不同的项目将确保View对象没有引用到ViewModel中。

另一点是构建时间可能会缩短,因为每次都不会重新编译整个解决方案。 对您的经理来说可能是一个很好的论据(但根据您的解决方案的规模,这个假设可能是错误的)。

如果您只有一个应用程序,那么一个项目就可以了。 但我认为这是非常罕见的。 大多数情况下,您将拥有多个应用程序,因此通过拥有多个项目,您可以在应用程序之间重用组件 ,而无需执行共享源文件等hacky。

如果需要,可以使用不同的项目

上述就是C#学习教程:多个项目和一个解决方案的好处分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031673.html

发表评论

邮箱地址不会被公开。 必填项已用*标注