问题标签 [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 投票
1 回答
542 浏览

asp.net - 如何在 asp.net 项目之间重用 html/js/server 端代码?

我们有一个博客系统,我们出售给许多不同的客户(包括在许多不同的项目中)。该系统包括许多不同的文件——几个 aspx 页面、一个或两个 ascx 控件、一个 css 文件、一个 javascript 文件和一些 codebehind/vb.net 实用程序文件。一般来说,这个模块的 90% 以上在客户之间是相同的——但当然每个客户都想要一些定制——从装饰性的 html/css 更改到服务器/客户端逻辑调整。

目前,要将我们的博客系统部署到一个新项目,我们只需复制文件(从我们处理的上一个项目中)并根据需要自定义文件……但现在我们有 10 个独特且不兼容的博客系统副本。仅仅让博客系统在每个项目中工作需要相当多的时间——并且将改进从新的博客系统传播到旧的系统和维护是一个真正令人头疼的问题。

理想情况下,我们会有一个博客系统文件的“黄金副本”,用于一般 (90%) 案例。我们可以将那个黄金副本添加到一个新项目中,让一个博客系统几乎可以立即运行——但是我们可以根据需要添加或自定义文件。更好的是——随着我们对“黄金副本”的改进,这些更改可以轻松部署到我们所有的站点——同时尊重我们为客户所做的定制。

我知道我们可以添加新的 css 文件来更改基类并添加新的 vb.net 类来覆盖基本服务器端逻辑——但我真的不确定如何处理 aspx、ascx 和 js 文件。 理想情况下,我们可以找到基于文件或源代码安全的解决方案——例如,如果存在带有自定义的新文件,它将自动覆盖黄金文件中任何相应的标记/js/etc。 当然,我们对所有解决方案持开放态度——这似乎是一个很常见的场景,所以我希望有人能开发出“最佳实践”。我所描述的甚至可能吗?任何建议或方向都非常感谢 - 在此先感谢!

谢恩

0 投票
1 回答
1133 浏览

asp.net - ASP.NET MVC UserControl 需要 css/javascript

我有一个用户控件(用户详细信息表单),其中附加了很多 javascript 和 css。我正在努力使我的控件贴花它需要某个文件,因此它将包含在 html 的“head”部分中。

我也想知道如果我输入一个控件的多个实例会发生什么(不是 InamingContainer 或类似的东西)。

0 投票
1 回答
207 浏览

winforms - Win32/.NET Win 表单中的 UC(用户组件)概念

几年前,我什么时候作为网络开发人员在公司工作。它有我的第一个 Sirius Web 开发工作 (ASPx/C#),所以它非常令人兴奋,从开发人员的角度来看,我学到了很多关于这个世界的知识。

在那个组中,我们对加载在页面 UC(用户控件)中的页面有一个概念,我不知道在每个使用每种语言的 Web 开发团队中是否都相同,我假设是这样。

合同结束,我回来开发win32“winForm”应用程序。

但是自从他们开始我尝试将相同的原则应用到我在那里学习的 win32 开发中,这意味着我在表单中加载了一堆 UC(视觉用户控件)。它们是常规的可视化组件,没有加载到工具箱中,代码在项目中可用,但组件不是以表单开发的,它们是在那里加载的。

我想知道关于这种方法的意见,其他人在做什么与此类似或更好,以及可以帮助我们加快开发速度和增加代码重用的改进,因为这就是全部内容。

0 投票
2 回答
3882 浏览

python - 如何在 Django 中重用可重用的应用程序


我正在尝试在 Django 中创建我的第一个站点,并且在寻找示例应用程序以从中汲取灵感时,我经常偶然发现一个名为“可重用应用程序”的术语。

我理解可重用应用程序的概念很容易,但在 Django 中重用应用程序的方法对我来说非常迷茫。在整个业务中困扰我的几个问题是:

重用现有 Django 应用程序的首选方法是什么?我把它放在哪里以及如何引用它?

据我了解,建议将其放在您的“PYTHONPATH”上,但是一旦我需要将我的应用程序部署到我访问受限的远程位置(例如在托管服务上),它就会中断。

因此,如果我在本地计算机上开发我的站点并打算将其部署在我只有 ftp 访问权限的 ISP 上,我如何重用 3rd 方 Django 应用程序,以便如果我部署我的站点,该站点可以继续工作(例如我唯一能指望的是服务提供商安装了​​ Python 2.5 和 Django 1.x)?

如何组织我的 Django 项目,以便我可以轻松地将它与我想要使用的所有可重用应用程序一起部署?

0 投票
2 回答
2261 浏览

php - 结合递归迭代器结果:children with parents

我正在尝试遍历包含大量 PHP 文件的目录,并检测每个文件中定义了哪些类。

考虑以下:

上面的$php_files_and_content变量表示一个迭代器,其中键是文件路径,内容是文件的源代码(好像这在示例中并不明显)。

然后将其提供给另一个迭代器,它将匹配源代码中所有定义的类,ala:

不是按数字顺序排列的原因$index是因为在第二个源代码文件中定义了“C 类”,因此返回的数组再次从索引 0 开始。这保留在 RecursiveIteratorIterator 中,因为每组结果代表一个单独的 Iterator(因此是键/值对)。

无论如何,我现在要做的是找到组合这些的最佳方法,这样当我迭代新的迭代器时,我可以获得键是类名(来自$defined_classes迭代器),值是原始文件路径,阿拉:

这就是我到目前为止所困的地方。

目前,唯一想到的解决方案是创建一个新的 RecursiveIterator,它覆盖 current() 方法以返回外部迭代器 key() (这将是原始文件路径),并返回 key() 方法当前的迭代器()值。但我不赞成这种解决方案,因为:

  • 听起来很复杂(这意味着代码看起来很可怕,而且不直观
  • 业务规则在类中是硬编码的,而我想定义一些通用的迭代器,并能够以这样的方式组合它们以产生所需的结果。

任何想法或建议都非常感激。

我也意识到有更快,更有效的方法来做到这一点,但这也是我自己使用迭代器的练习,也是促进代码重用的练习,因此必须编写的任何新迭代器都应该尽可能少并尝试利用现有功能。

谢谢

0 投票
1 回答
1138 浏览

xaml - Silverlight 2 样式中的继承

我想在 XAML 中建立样式,例如

但这不起作用。(在 Silverlight 2 中)如何让一个继承另一个?


2010 年 6 月更新: Silverlight 3 中的样式继承,请使用BasedOn="{StaticResource MyStyle}

0 投票
5 回答
174 浏览

.net - 分离和重构大量依赖类的最佳方法

我有大量的分层结构(或 DTO),它们在不同的业务逻辑、应用程序层、Web 服务和 WCF 合同之间共享。我想重构我的所有代码以将结构拆分为谨慎的业务领域。

两个问题:

  1. 是否有任何工具可以帮助我做到这一点(假设我想要 A 类,列出所有依赖项)?

  2. 是否有在不同应用程序域中复制 DTO 以允许它们独立发展的情况?固定的规范商业模式的想法纯属虚构!

0 投票
20 回答
3400 浏览

c++ - 好主意/坏主意 我应该重新实现大部分 C++ 吗?

最近,在阅读了这篇博文后,我的脑海中出现了一个危险的想法。这个想法可以这样表达:

我不需要 C++ 标准库提供的大部分内容。那么,为什么我不实现一个不太通用但更易于使用的版本呢?

例如,使用 STL 会吐出大量难以理解的编译器错误。但是,我不关心分配器、迭代器等。那么,为什么我不花几个小时来实现一个易于使用的链表类呢?

我想从 StackOverflow 社区知道的是:对于 C++ 中的大多数现有功能,“自行开发”有哪些危险、可能的缺点和可能的优点?

编辑:我觉得人们误解了我的这个想法。我的想法是了解我是否可以实现一个非常小的 STL 功能集,并大大简化了 - 更多的是作为一个项目来教我数据结构等。我不建议从头开始重新发明整个轮子,只是我需要和想要了解的部分。我想我想弄清楚的是,使用 STL 的复杂性是否需要创建更小、更简单的版本。

重复使用 boost 或类似的。

我编写的大部分代码都是为大学编写的,我们不允许使用外部库。所以它要么是 C++ 标准库,要么是我自己的类。

这个问题的客观性。

这个问题不是主观的。它也不应该是社区 Wiki,因为它不是民意调查。我想要具体的论点来突出我的方法可能出现的一个优点或一个缺点。与流行的看法相反,这不是意见,而是基于经验或良好的逻辑论证。

格式。

请每个答案只发布一个缺点或一个优点。这将允许人们一次评估单个想法而不是您的所有想法。

请...

没有宗教战争。我不是任何语言的粉丝。我使用任何适用的。对于图形和数据压缩(我目前正在做的工作),这似乎是 C++。请限制您对该问题的回答,否则他们将被否决。

0 投票
3 回答
149 浏览

resources - 重组项目以进行扩展/重用

我正在从事的项目的范围正在扩大。该应用程序相当简单,但目前针对的是一个非常具体的利基市场。在不久的将来,我被要求分叉该项目以瞄准新市场并继续同时开发这两个项目。

这两个项目将在功能上相似,因此有很强的动力去概括原始项目的许多内容。此外,我确信我会在不久的将来瞄准更多市场(这些市场是地域性的)。

问题是该项目的先前维护者做出了许多将其与原始市场联系起来的假设。将通用代码与市场特定代码分开需要进行相当多的重构。

为了使事情变得更复杂,关于如何为越来越多的市场组织项目,已经提出了一些建议:

  1. 每个市场都是一个独立的项目,项目之间的共性被移动到一个共享库中,项目独立部署。
  2. 扩展现有项目以针对多个市场,根据购买的许可证限制功能。
  3. 创建父应用程序并将项目重新设计为插件,单独购买

所有三个建议都有优点,理想情况下,我希望代码结构足够灵活,只要稍作调整,就可以实现其中任何一个。建议 3 似乎是最令人生畏的,因为它需要构建一个插件架构。前两个建议更合理一些。

关于这些不同架构的优缺点,是否有任何好的资源可用?

在项目之间共享代码与复制和分叉的优缺点是什么?

0 投票
2 回答
531 浏览

asp.net-mvc - ASP.Net MVC 中服务器控件的位置在哪里?

在 ASP.Net MVC 的光明新世界中,推荐的 ASP.Net 服务器控件替换是什么?

在我看来,ASP.Net 的最佳特性之一是编写服务器控件的能力(尽管不可否认,事件模型处理起来很可怕)。如果这些控件是自填充的,那么它们可以在不同的项目之间共享,而无需大惊小怪——您只需引用服务器控件所在的程序集,然后将其放到 aspx 上。控制完成其余的工作。这非常适合小部件世界并提供有效的代码重用。如何在 MVC 中实现相同的目标?

我对不回发的自我填充控件最​​感兴趣,因为我很欣赏回发模型绝对不适合 MVC。它们仍然可以封装在一个可以在多个不同 MVC Web 项目之间共享的类中吗?或者这是否需要一种完全不同的思维方式,其中控件不应该填充自己,并且应该使用局部视图?有没有办法在项目之间共享部分视图?

最后,我可以在 MVC 项目中使用旧的(非回发)服务器控件吗?