Questions tagged «projects-and-solutions»

12
在项目之间共享微小代码段的最佳实践
我一直在工作中严格遵循DRY原则;每次我由于懒惰而重复编写代码时,都会在以后需要在两个地方维护该代码时再次出现。 但是我经常写一些小的方法(可能是10到15行代码),这些方法需要在两个不能互相引用的项目中重用。该方法可能与网络/字符串/ MVVM等有关,并且是一种通用的有用方法,并不特定于它最初所在的项目。 重用此代码的标准方法是为可重用代码创建一个独立的项目,并在需要时引用该项目。问题在于,我们最终遇到了两种不理想的情况之一: 我们最终得到了数以百计的小项目-每个小项目都包含我们需要重用的小类/方法。.DLL仅需少量代码就可以创建一个全新的应用程序吗? 我们最终完成了一个项目,其中包含越来越多的不相关方法和类。这种方法是我曾经工作过的公司所做的。他们有一个名为的项目base.common,其中包含用于我上面提到的事情的文件夹:联网,字符串处理,MVVM等。它非常方便,但是不必要地将其与所有不需要的无关代码一起拖到它。 所以我的问题是: 软件团队如何最好地在项目之间重用少量代码? 我特别感兴趣的是,如果有人在一家在这方面有政策的公司工作,或者像我本人那样亲自遇到了这个难题。 注意:我对“项目”,“解决方案”和“参考”一词的使用来自Visual Studio .NET开发的背景。但是我敢肯定,这个问题与语言和平台无关。

2
如何组织C ++单元测试代码以实现最大的单元测试效率?
这个问题与单元测试框架无关。 这个问题与编写单元测试无关。 这个问题是关于在哪里放置UT代码以及如何/何时/在哪里编译和运行它。 在有效地使用旧版代码中,迈克尔·费瑟斯断言 良好的单元测试...运行速度快 然后 运行1/10秒的单元测试是缓慢的单元测试。 我认为这些定义确实有意义。我还认为,这意味着您必须分别保留一组单元测试和一组代码测试,这些测试需要更长的时间,但是我想这就是您仅在运行(非常快)时才调用单元测试的价格。 显然,问题在C ++中是“跑”单元测试(小号),你必须: 编辑代码(生产或单元测试,具体取决于您所在的“周期”) 编译 链接 启动单元测试可执行文件(小号) 编辑(经过奇怪的近距离表决):在进入细节之前,我将尝试在此处总结要点: 如何有效地组织C ++单元测试代码,这样既可以有效地编辑(测试)代码又可以运行测试代码? 然后,第一个问题是确定将单元测试代码放在哪里,以便: 结合相关的生产代码进行编辑和查看是“自然的”。 轻松/快速地为您当前更改的单元开始编译周期 在第二个的话,相关的,问题是什么来编译,这样的反馈是瞬时的。 极端的选择: 每个单元测试-测试单元都位于一个单独的cpp文件中,并且此cpp文件被单独编译+链接(连同它测试的源代码单元文件)到单个可执行文件,然后该可执行文件运行此一个单元测试。 (+)这样可以最小化单个测试单元的启动(编译+链接!)时间。 (+)测试运行非常快,因为它仅测试一个单元。 (-)执行整个套件将需要启动大量流程。可能是一个管理难题。 (-)流程启动的开销将变得可见 另一面将是-仍然-每个测试一个cpp文件,但是所有测试cpp文件(以及它们测试的代码!)都链接到一个可执行文件中(每个模块/每个项目/选择您的选择)。 (+)编译时间仍然可以,因为只有更改的代码才能编译。 (+)执行整个套件很容易,因为只有一个exe可以运行。 (-)套件将花费很多时间进行链接,因为任何对象的每次重新编译都会触发重新链接。 (-)(?)套装将花费更长的时间运行,尽管如果所有单元测试都很快,则时间应该可以。 那么,现实世界中的C ++ 单元测试如何处理?如果我只是每晚/每小时运行一次,那么第二部分并不重要,但是第一部分,即如何将UT代码“耦合”到生产代码,这样对于开发人员来说,将两者保持一致是“自然的”我认为专注始终很重要。(如果开发人员将UT代码作为重点,他们将要运行它,这将使我们回到第二部分。) 欣赏真实世界的故事和经验! 笔记: 该问题有意离开了未指定的平台和品牌/项目系统。 问题带有标记的UT&C ++是一个很好的起点,但是不幸的是,太多的问题(尤其是答案)过于注重细节或特定框架。 前一阵子,我回答了关于升压单元测试的结构的类似问题。我发现这种结构对于“真实的”快速单元测试是缺少的。我发现另一个问题过于狭窄,因此提出了这个新问题。

4
为什么我应该使用MSBuild而不是Visual Studio解决方案文件?
我们正在使用TeamCity进行持续集成,并通过解决方案文件(.sln)构建我们的发行版。过去,我曾在各种系统上使用过Makefile,但从未使用过msbuild(我听说这有点像Makefiles + XML mashup)。我已经看到很多关于如何直接使用msbuild而不是解决方案文件的文章,但是我对为什么要使用msbuild并没有一个很明确的答案。 那么,为什么还要麻烦从解决方案文件迁移到MSBuild“ makefile”呢?我们确实有几个版本,它们之间的区别是#define(功能完善的版本),但大多数情况下一切正常。 更大的问题是,现在添加项目/源代码时,我们必须维护两个系统。 更新: 人们能否阐明以下三个组成部分的生命周期和相互作用? Visual Studio .sln文件 许多项目级别的.csproj文件(据我了解,这是一个“子” msbuild脚本) 自定义msbuild脚本 可以肯定地说,在自定义msbuild脚本是手写的并且通常以“原样”使用已经存在的单个.csproj的情况下,从Visual Studio IDE GUI照例使用/维护.sln和.csproj吗?这是我可以看到减少维护重叠/重复的一种方式... 希望从其他人的操作经验中得到一些启发

7
从VBA到C#的团队成员质疑
背景 去年,我被要求为大约10个用户创建一个用于业务计划的工具。这项工作是由另一个IT团队代表完成的,该团队将工作“分包”给我,并且由于项目期限在他们这边有些计划外,我不得不匆忙实施。 当时,我们决定最快的方法是使用VBA创建Excel工作簿,然后让用户从Intranet下载此VBA增强的工作簿以在其PC上使用。在这种情况下,Excel是一个约束,因为我们使用的计划系统(即数据库)只能通过Excel加载项进行交互,该加载项必须在打开计划工作簿的同时加载。但是,当时VBA并不是一个约束。 我创建了约4,000行VBA代码的工作簿,虽然我尝试分离数据层和表示层,但由于项目截止日期,所以在所有情况下都无法做到。老实说,虽然我为创建此工作簿感到自豪,但同时我感到有些失望,因为它在编码和部署到用户方面都可以做得更好。 今天 回到今天,IT团队再次来找我,要求提供类似的工作簿(这样我就可以重用上面其他工作簿的部分内容),但这一次它变得更加复杂,将被更多的用户使用( 200左右)。 但是,这次的计划要好一些,我可以看到我们有更多的时间来计划事情。基于此,我考虑了该解决方案和基础架构,因为针对100个用户的编程比对10个用户的编程影响更大。因此,我向团队建议,也许我们应该考虑将现有代码迁移到C#解决方案,以便我们可以以更精细的方式管理代码。我仍将其视为使用VSTO / Excel-DNA编写的加载项,然后可以将其部署到用户。 两周前,我与IT团队讨论了这一问题,一切似乎都很好,直到昨天,我收到一个团队(不了解VBA或C#)的邮件,询问我们为什么应该在C#中启动这个新项目,而不是使用与以前相同的方法。他们的一些担忧是: 这是一个非常重要的项目,因此它必须能够工作-C#解决方案不能像现有的基于VBA的解决方案那样稳定或有效。 我们将不得不舍弃[I]在VBA解决方案中所做的事情,并在C#中从头开始重新创建它。 有人必须支持两种单独的解决方案,一种在VBA中,一种在C#中。[实际上,他们目前没有任何人支持,我通常会介入]。 现在,我可以在某种程度上理解他们的一些担忧,但是我需要决定下一步的工作以及如何处理这些问题。就个人而言,我想用C#实施,因为我认为它更适合于构建这样的“企业”解决方案。此外,我想借此机会提高我的C#技能,因为我目前不像VBA那样胜任C#的能力,并且我希望通过这样的项目将我带入“下一个级别”。 我准备了一些要点,可以用来说服他们说C#解决方案更适合该项目,这是我到目前为止的目标: 单元测试。 源代码控制。 代码文档-用于将知识转移给其他支持人员。 更好的编码约定-可以使用ReSharper之类的东西来加强更好的命名和结构。 更好的IDE-减少由于错误突出显示而导致的错误。 通过组件实现更高的模块化-可以促进将来工具的重用。 托管部署-可以控制使用此工具的人员。 问题:我还能说些什么来说服他们?还是我想尽全力去完成这个项目?我应该保持安静,还是在VBA中这样做吗? 我知道,仅因为新语言的“较新”或被视为“较凉爽”而改用新语言就不应作为决策的基础,因此我拒绝将其作为决策要点-这是关于事实的。 另外,我不要求在C#和VBA作为语言之间进行字面比较,因为在SO上有很多比较。

5
多租户-单数据库与多数据库
我们有许多客户,他们的系统共享一些功能,但也有一定程度的多样性。客户数量在增长-永远是健康的事情!-他们的业务之间的差异也在增加。 当前,只有一个ASP.Net(Web窗体)网站(与Web项目相对),其中每个租户都有子文件夹,并带有该租户的非标准页面。有一个单独的模型项目,处理数据库访问和业务逻辑。 在(a)每个客户端拥有1个数据库且仅具有与该客户端相关联的功能之间,这是更好的选择,也是最重要的原因。(b)由所有客户端共享的单个数据库,其中任何一个客户端仅使用表的子集。 企业内部的主要担忧已经结束: 维护多个资产-备份,版本控制等 尽可能促进重复使用 您将如何确保解决这些问题,哪种解决方案更可取,为什么?(我也一直在整理类似问题的答案)

3
如何在同一应用程序中同时定位Windows 10 UWP和Windows Phone 8.1?
背景 从开发人员的角度来看,Windows 10的主要卖点是其新的Universal * Windows Platform(UWP)。 *如果“万能”的真正含义“万能到运行Windows 10的所有设备”,而不是“普及到运行不仅限于Windows 10的设备,但也是Windows 8.1和可能的Windows 7”。因此,如果您要构建UWP应用程序,则实际上只是在构建“ Windows 10应用程序”。UWP应用程序甚至无法在Windows 8.1和Windows Phone 8.1设备上运行,即它们根本不向后兼容。 从2015年第三季度开始,Windows 10可用于PC和IoT设备。至少要再过几个月才能向公众发布Windows 10移动版,但可能不会超过一年。这意味着Windows Phone 8.1将保留一段时间。 题 我将开始开发Windows Phone应用程序,由于它是一个相当简单的应用程序,因此我计划在下个月左右发布它。由于Windows 10移动版不会很快面世,更不用说升级的设备了,我现在必须瞄准Windows Phone 8.1。但是,由于它不会是那个视窗10没过多久手机的推出,我想知道,如果它会是明智的准备我的部署解决方案到Windows 10 UWP 以及 Windows Phone的8.1(这也会让我在需要时继续支持8.1)。 我看到我可以在同一解决方案中将UWP项目和8.1项目分组,并且可以像Visual Studio中的Windows 8.1 Universal模板一样通过共享项目共享源文件和资产。我在正确的轨道上吗?如果是这样,我是否应该遵循任何其他准则来确保所有功能(包括XAML,理想情况下,我希望在两个平台上都具有相同或至少相似的UI)在两个平台上均能正常工作(考虑到任何不一致性)? 另外,我现在不必担心Windows 10移动版并从8.1项目开始,然后再将其迁移到UWP,但是由于我不打算放弃8.1,所以我仍然必须维护我的两个版本。用户立即。在这种情况下,我仍然需要担心功能/ XAML奇偶校验。

2
NET中如何构造多个重叠的解决方案/项目?
我最近开始为具有旧的旧版代码库的新客户工作,在旧版代码库中有多个.net解决方案,每个解决方案通常托管一些对该解决方案唯一的项目,然后“借用” /“链接”(添加现有项目)其他一些项目从技术上讲,它属于其他解决方案(至少如果您按TFS中的文件夹结构进行操作) 我从未见过如此交错的设置,没有明确的构建顺序,有时解决方案A中的项目只是直接从解决方案B中托管的项目的输出目录中引用dll,有时即使已驻留该项目,也直接将其包括在内FAR在文件夹结构中消失。 似乎所有内容都已针对开发人员的延迟进行了优化。 当我面对他们为什么没有CI服务器时,他们回答说,很难像这样组织代码。(我现在正在设置它并咒骂此代码组织) 这些解决方案是围绕部署工件(需要一起部署的东西在同一个解决方案中)组织的,我认为这是一个明智的决定,但是这些解决方案(项目)的内容无处不在。 在多个解决方案/部署工件之间重用公共类库时,是否存在最佳实践的共识, 如何在VCS中构造代码 如何促进在单独的部署工件之间共享业务逻辑

1
最佳方法:重组现有的Team Foundation Server(TFS)解决方案
在我的部门中,我们正在为某些统一通信服务器开发几个较小的插件。对于版本控制和分布式开发,我们使用Team Foundation Server 2012。 但是:对于我们所有的应用程序和库,只有一个大型TFS解决方案: 主要解决方案 应用领域 应用程式1 应用程式2 应用程式3 外在 图书馆 库1 库2 工具类 “应用程序”路径包含所有主要应用程序。它们并不相互依赖,但是取决于库和外部项目。 “外部”路径包含一些在我们的应用程序和库中引用的外部DLL。 库路径包含常用的库(UI模板,Helper类等)。它们彼此不依赖,并且在“库”和“工具”项目中被引用。 工具路径包含一些帮助程序,例如设置帮助程序,更新Web服务等。 现在,有一些要点为什么我想更改这种结构: 我们不能使用服务器版本。 用这样的解决方案结构来管理带有冲刺,障碍等的TFS Scrum管理是不舒服的。 每个开发人员始终可以访问解决方案中的所有项目。 如果在Visual Studio中意外击中[F6],则完整的构建会持续太长时间。 您将在此解决方案中进行哪些更改?您如何将这些项目分解为较小的解决方案,应如何构建这些解决方案。 我的第一种方法是为每个应用程序,库和工具创建一个TFS项目。但是,如何确保例如App 2始终包含Lib 1的最新版本?我需要监视库1的更改并在库更改后立即手动更新App 2吗?还是可以以某种方式强制Visual Studio始终以某种方式使用外部项目的最新版本? 编辑:在TFS上,只有一个TFS团队项目集合,其中包含一个TFS团队项目。团队项目包含一个大型的Visual Studio解决方案,其中包含几个包含(请参见上面的结构)的文件夹,每个文件夹都包含多个VS项目。 我的问题是,现在您将如何重组: TFS团队项目 VS项目

5
向Web应用程序提供给客户的可交付成果是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我已经完成了一个Web应用程序,该应用程序基本上是用PHP开发的,它只是另一个常规的Web应用程序。通常,当我交付最终产品版本时,我只是将代码文档和体系结构信息移交给客户端。但是,对于这个特定项目,客户坚持要拥有有关该项目的完整的输入和输出数据。 所以我只是想知道...除了代码和体系结构文档之外,我还可以为客户提供哪些强制性技术文档和非技术文档? (也可以向客户介绍有关该项目的各种统计数据和数据,这样他才能真正知道所涉及的工作量以及产品的实际效果如何。)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.