问题标签 [code-reuse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
866 浏览

ruby-on-rails - 如何将大型 Rails 应用程序切割成可以协同工作的小型应用程序?

我使用过 Django,我非常喜欢它的项目/应用程序模型:您可以通过组装一个或多个 Django 应用程序来构建一个 Django 项目。这些应用程序可以是自治的,或者某些应用程序可以构建在其他应用程序之上。一个应用程序可以很容易地依赖另一个应用程序的模型,以及它的控制器(Django 帅哥称它们为“视图”)甚至它的视图(Django 中的“模板”)。

我现在正在处理一个相对较大的 Ruby on Rails 项目,我很惊讶地发现在 Rails 中做同样的事情显然没有简单的方法。基本上,在 Rails 中,一个项目 = 一个应用程序。我们的项目一开始是一个巨大的单体应用程序,现在我们正试图弄清楚如何将它分成更小的块。

例如,我们当前的应用程序允许我们管理合作伙伴和合同(除其他外)。我想要一个“合作伙伴”应用程序来管理我们的合作伙伴(地址、联系人等)和一个“合同”应用程序来管理我们与合作伙伴的合同。“合同”应用程序将依赖于“合作伙伴”应用程序(但为了避免循环依赖,我希望“合作伙伴”应用程序不了解“合同”应用程序)。

目前,我认为以下是主要选项:

  1. 使这些应用程序通过 REST 请求进行通信(每个应用程序都将充当 Web 服务):这很好,但似乎禁止重用其他应用程序的视图。例如,如果“合作伙伴”应用程序有一个不错的页面来显示合作伙伴的详细信息,并且如果我想在合同详细信息页面的中间显示该页面,稍作修改,我看不到其他方法这比让“合同”应用程序通过 REST 请求向“合作伙伴”应用程序询问合作伙伴详细信息(它将获得对象表示,而不是视图),然后从“合作伙伴”应用程序到“合同”应用程序。
  2. 将这些应用程序变成插件:没有那么好,而且有点困难,但似乎允许模型和视图重用
  3. 使用 svn external 从应用程序到应用程序共享一些模型:简单但丑陋。

感谢您的建议。

0 投票
6 回答
1445 浏览

version-control - 我应该为可重用代码库组织提出什么建议?

在过去的一两年里,我的组织已经开始慢慢地将自己重新定位为较少以产品为导向的商业模式和更多以合同为导向的商业模式。在过去的一年里,我被转移到新的承包业务中,以帮助扑灭火灾并完成订单。虽然这一年全年都是盈利的(因此,至少从一个衡量标准来看,它是成功的,但我们有几个项目确实在 6 月左右为我们的一年带来了数字。

我在圣诞节假期前和我的经理谈过,他提到了这一点,虽然他不喜欢“事后分析”这个词(我不知道这个词有什么问题,那里的任何商业人士或经理都知道吗?) ,他确实想在 1 月中旬的某个时候召开一次会议,整个合同小组将在会上回顾这一年,并试图弄清楚什么是正确的,什么是错误的,以及我们可以采取哪些措施来提高盈利能力。

出于各种原因(如果需要,我会更详细地介绍),我相信我们的团队乃至整个组织将从中受益的一件事是某种形式的有组织的代码共享。同样的事情由不同的人一次又一次地完成,他们最终以不同的方式完成(和破坏)。我想至少建立一个存储库,人们可以在其中获取执行特定任务的代码,并将该代码包含(或者,实际上是复制/粘贴)他们自己的项目中。

我应该为至少 10-12 名全职开发人员以及临时借给合同组从事专业工作的 5-50 名(非常)兼职开发人员的团队提供一个可行的公共源存储库,我应该提出什么建议?

答案需要一些文化信息才能获得合理的答案,因此我将在此处提供它,以及我对该主题的一些想法:

  1. 开发人员不会被迫使用此存储库。进入门槛必须尽可能低以鼓励参与,否则将被忽略。 可悲的是,这意味着任何需要安装和运行附加软件客户端的东西都可能会失败。ClickOnce 部署几乎是我们所能得到的,这是非常不确定的。
  2. 我们是规避风险的微软商店。 我也许可以销售开源解决方案,但他们会受到怀疑。所有的开发者都有 VSS,公司总监已经宣布 VSTS 在未来是不可行的。如果设置不是太困难并且许可证是自由的,我仍然可以尝试将 VSTS 服务器忍者进入实验室。
  3. 我的一些开发伙伴关心编写质量、可靠的软件,有些则不关心。 我想保护那些关心那些不关心的人编写的任何共享代码。合同团队中至少五分之一的同事完全忽略了常见的配置管理实践(例如在处理代码时检查代码)。
  4. 我们更擅长编写流程而不是遵循它们。 我几乎必须有某种形式的书面流程才能将其出售给我的经理。我相信它必须是轻量级的、灵活的,并且由工具强制执行才能远程相关,因为我的经理是唯一会阅读它的人。
  5. 不要假设最佳实践。 我非常希望包含强制代码审查之类的内容,以强制在公共代码上使用静态分析工具(FxCop、StyleCop)。然而,这提高了标准,因为目前没有以一致的方式执行此类做法。

我很乐意提供任何其他要求的信息。:)

编辑:(回答问题)

也许承包不是正确的术语。我们绝对拥有自己的代码资产。纸面上的商业模式的一个重要部分(尽管实际上还没有)是我们拥有我们编写的代码/项目,我们可以将它们转售给其他客户。我们的项目通常采用向公司众多现有软件产品之一添加一些特殊功能的形式。

0 投票
5 回答
2334 浏览

.net - 实用程序库中包含的内容

随着我的项目越来越多,我发现我经常从一个项目到另一个项目,从一个客户到另一个客户重复许多常见的任务。所以我开始组装一个“实用程序”库,一个项目之间经常重复的这些常见元素的集合。

到目前为止,我拥有调整图像大小、将数据网格导出到 Excel、发送电子邮件和替换标记化消息的实用程序。

如果您正在构建/使用 .NET 实用程序类库,您会认为哪些类型的进程有帮助?您会设想哪些名称空间/组?

更新

我说的是一个实际的类库,它被分成命名空间来对公共元素进行分组。

0 投票
5 回答
1034 浏览

c# - 人们如何在 C# 中获得 mixin 风格的重用?

我来自 C++ 背景,我可以使用模板混合来编写引用 FinalClass 的代码,这是一个传入的模板参数。这允许可重用​​函数“混合”到任何派生类,只需从 ReusableMixin 继承使用 MyFinalClass 的模板参数。这一切都被内联到类中,所以就好像我刚刚编写了一个完成所有事情的大类——即非常快!由于 mixins 可以链接,我可以将各种行为(和状态)混合到一个对象中。

如果有人想澄清该技术,请询问。我的问题是,我怎样才能在 C# 中获得这样的重用?注意:C# 泛型不允许从泛型参数继承。

0 投票
3 回答
527 浏览

apache-flex - 在 Flex MVC 环境中重用函数的最佳方式是什么?

我正在为我当前的项目使用 Cairngorm MVC 架构。

我有几个命令使用相同类型的返回值的函数。我想把这个函数放在一个地方,并重用它,而不是在每个命令中复制代码。做这个的最好方式是什么?

0 投票
11 回答
597 浏览

class - 类如何帮助您管理大型应用程序?

这出现在我在网上进行的一次谈话中,我突然想到我不知道这应该如何工作:相当多的程序员似乎只是把它当作一个给定的——事实上,很明显,类是一种必要的语言用于管理大型软件项目的功能。

他们如何做到这一点对我来说并不明显。

我的问题是,你怎么知道?有哪些客观措施表明类可以提高生产力、代码重用并降低程序生产的复杂性?类的哪些方面使它们成为大型团队协作的理想选择?

现在,我想问一个问题,这有点难以表达。如果我弄错了并最终使任何人感到困惑或激怒,我很抱歉:

客观地说,你怎么知道类的使用不是导致应用程序变大的原因呢?也就是说,是否可以使用其他代码重用策略编写具有等效功能的程序,代码少得多,小到不需要任何特殊措施来“管理”它?(有很多可供选择,例如函数式编程范例或面向方面的编程)。

最后一点是史蒂夫·耶格(Steve Yegge)在他的博客上暗示的。但我对争论的双方都持怀疑态度,因为真正缺乏任何人的任何硬数据,也没有足够的经验来独自得出结论。

你怎么看?

编辑:我特别感兴趣的是为什么许多程序员认为原型样式继承在大型应用程序中不能胜任这项任务。我很抱歉这个问题含糊不清 - 这是我对这个话题缺乏了解的产物。

编辑2:我所说的函数式编程似乎有些混乱。(我认为任何版本的 VB 都没有功能,当然不是旧版本)。请参阅维基百科文章。 http://en.wikipedia.org/wiki/Functional_programming

编辑3:让我强调我正在寻找客观的措施。不是主观意见。

0 投票
16 回答
1345 浏览

.net - 每个开发人员的工具箱中应该有哪些可重用的代码?

我正在尝试建立一个可重用代码库以在项目之间使用。当我编写代码片段和组件时,我试图决定哪些库我会从长期 VS 中得到最多的使用,我真的会再次使用它吗?

每个开发人员都应该重用哪些代码或组件?

我主要对.net web 和winforms 感兴趣。

0 投票
4 回答
1900 浏览

asp.net - 将现有表格样式应用于 Gridview

我正在开发我们现有 winforms 项目的网络版本。Gridviews 似乎是我们一直在使用的数据网格的充分替代品。我们为旧数据网格编写了广泛的表格样式。是否可以重用此代码以将样式应用于网格视图?

如果需要重写,那么设置网格视图样式的最佳方法是什么?

0 投票
14 回答
5137 浏览

performance - 编码优先级:性能、可维护性、可重用性?

这主要是由于对 SQL 问题的回答。出于性能考虑,有意省略了 UDF 和子查询。我没有包括可靠性,而不是认为它应该被视为理所当然,但代码必须工作。

性能永远是第一位的吗?以性能为主要优先事项提供了如此多的答案。我的用户似乎更关心代码的修改速度。因此,运行报告需要 15 秒而不是 12 秒。只要我不为不提供解决方案找借口,他们就可以忍受。

显然,如果 15 秒变成 15 分钟,那就有问题了,但用户想要这个功能。他们希望应用程序适应业务规则更改和增强请求。我希望能够在 6 个月后查看代码,并且能够在一个容易识别的位置进行更改,而不是追查所有那些有人复制和粘贴代码的地方,因为他们认为调用另一个函数或子例程或 Udf 会阻碍性能。

说了这么多,我要订购:可维护性(改变是生活中的事实。),性能(没有人喜欢盯着沙漏。),可重用性(很难确定应该再次使用什么代码。)。

0 投票
6 回答
234 浏览

shared-libraries - 您如何促进在您的组织中使用共享组件?

如果您的公司或项目强调(或至少赞赏)可在项目之间重用和共享的代码和组件的开发,那么您需要做哪些“社会工程”来促进重用编码?

根据我的经验,除非有人支持或宣传该代码,否则不会重复使用简单地称为“可重用”的代码或组件。否则,人们根本不会知道它。

您如何确保共享组件或可重用代码在您的组织中工作?