问题标签 [modularity]

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 回答
145 浏览

c++ - 在整个应用程序中重用接口

我目前正忙于重构我的应用程序中的大部分内容。主要目的是尽可能多地去除不同模块之间的依赖关系。我现在偶然发现以下问题:

在我的应用程序中,我有一个定义了接口 IDataProvider 的 GUI 模块。该接口需要由应用程序实现,用于向 GUI 模块“提供数据”。例如,可以给一个数据网格这个 IDataProvider 并使用它来循环所有应该在数据网格中显示的实例,并获取它们的数据。

现在有了另一个模块(实际上还有更多模块),它们都需要类似的东西(比如报告模块、数据库集成模块、数学求解器模块……)。此刻我可以看到两件事我可以做:

  • 我可以将 IDataProvider 从 GUI 层移动到更低级别的层,并在所有其他模块中重用相同的接口。
    • 这样做的好处是应用程序可以更轻松地使用所有模块(它只需实现一次数据提供程序)。
    • 缺点是我在模块和中央 IDataProvider 之间引入了依赖关系。如果有人开始使用一个模块所需的其他方法来扩展 IDataProvider,它也会开始污染其他模块。
  • 另一种选择是为每个模块提供自己的数据提供者,如果应用程序想要使用所有模块,则强制应用程序实现所有这些。
    • 优点是模块不依赖于公共部分
    • 缺点是我最终得到了 IGridDataProvider、IReportDataProvider、IDatabaseDataProvider、ISolverDataProvider。

最好的使用方法是什么?如果所有模块都需要[几乎或完全]相同类型的接口,是否可以让所有模块依赖于相同的公共接口?

如果我使用相同的 IDataProvider 接口,这是否会在未来产生令人讨厌的问题(我目前不知道)?

0 投票
3 回答
248 浏览

coldfusion - 需要模块化 Coldfusion 应用程序开发的建议

我正在启动一个新应用程序,并希望专注于使其模块化。我的意思是,在我的脑海中,我设想了一些基本的设施登录、用户角色、布局等,但随后我希望能够添加自包含的功能“块”,例如文档存储库和上传,日记和提醒服务..随便。

到目前为止,我如何布置应用程序只是根目录中的所有内容,图像和 cfcs 的单独子文件夹,坚持变量和查询名称等的命名约定,通过 cfcs 进行所有数据库交互,在页面顶部进行所有处理,然后是注释行,然后在其下方显示/页面布局。

我已经尝试过并且未能了解那里的各种框架,但我只是因优柔寡断而瘫痪,并且对我是否“正确”地做它感到困惑。有没有一种工作方式可以在不涉及整个官方“框架”的情况下被接受为一种有用的方法?

0 投票
3 回答
285 浏览

c++ - 模块化:是否使用接口?

几年以来,常识似乎表明最好针对接口进行编程而不是针对实现进行编程。对于高级代码,这确实看起来合乎逻辑,例如,如果我的应用程序中有一个复杂的求解器,最好有这样的东西:

而不是

在第一个代码中,模拟求解器也更容易,因此也更容易进行单元测试。

但我的问题是:在哪个级别使用界面不再有意义。例如,如果我的应用程序中有一个 ComplexNumber 类(或 String 类,或其他),则编写以下代码:

似乎比写作复杂得多(尤其是在性能方面):

那么,哪些元素在决定是否应该将某些东西放在接口后面以及什么时候不应该放在接口后面时很重要?

0 投票
3 回答
2378 浏览

wpf - 运行目录的所有模块(棱镜)

我正在使用棱镜的桌面库。

我想要的是在目录中获取模块,然后运行它们。

我喜欢这样:

我检查了,模块已加载到目录中。模块示例:

但后来我想运行它们(启动它们的 Initialize()),但我没有找到它。我想运行整个目录。有人有想法吗?我尝试了 catalog.Initialize()、catalog.Validate() 或 catalog.Load()

0 投票
1 回答
605 浏览

jquery - jQuery Cycle pagerAnchorBuilder Wordpress 模块化主题

Modularity Wordpress 主题包括一个围绕 jQuery Cycle 构建的“帖子滑块”。它使用寻呼机在滑块上方显示一个小数字。我希望能够将该数字更改为帖子标题。

主题中的代码如下:

jQuery(函数(){

});';

我不是一个 jQuery 编码器(你可能会说!),我认为对代码进行简单的调整如下就可以了:

$doc_ready_script .= ' jQuery(function() {

});';

但是,我现在收到一条错误消息,提示“解析错误:语法错误,意外'>'”。

所以,我意识到我做了一些非常愚蠢的事情!

可以请某种 jQuery 大师指出我正确的方向吗?

非常感谢期待!

0 投票
1 回答
422 浏览

asp.net-mvc - ASP.NET MVC 中的类 Wordpress 插件模型

这有点基于这个问题

我目前正在考虑从头开始重建我们公司的 Intranet(老实说,我们现有的 Intranet 绝对是一团糟),但我想要的新 Intranet 的核心“功能”之一是能力构建整个应用程序(也可能在 10 次中有 9 次出现在 MVC 中,另一个是标准 Web 表单)作为为核心提供附加功能的模块或在核心内创建新应用程序的模块(例如,如何Joomla 做到了),只需将它们插入到核心应用程序中,一旦它们完成就将它们放入目录中,并且在某些时候能够从管理界面启用和禁用它们。

我正在看 MEF 并试图了解它,尽管我也在看 MvcContrib Portable Areas,并想知道这是否是我正在尝试做的一个可行的替代方案。

我只是想知道这是否是试图让我到达我想去的地方的最佳选择,还是我打算使用 MEF 作为提供此功能的元素完全错误?

我什至可以在 MVC 中做我想做的事情吗?

0 投票
1 回答
795 浏览

git - 每个 Zend Framework 模块的单独 Git 子模块?

我使用可重用模块(例如邮件模块、cms 模块等)开发了很多基于 Zend 框架的应用程序。

每个项目都有自己的集中存储库并使用一些通用模块。每次我更新其中一个项目中的模块时,很可能我也需要更新其他项目中的模块。

使这些可重用模块同步的最佳方法是什么?每个 Zend Framework 项目都需要 ~10 个 git 子模块吗?你的做法是什么?项目外每个模块的单独回购?

0 投票
1 回答
1288 浏览

wpf - Prism 和 ASP.NET Web 部件可以一起工作吗?

我们正在尝试在我的工作中选择模块化编程解决方案。现在的选择是 Prism 或 ASP.NET Web Parts。

一位老板问你是否可以在 ASP.NET Web 部件中包装一个 Prism 模块,以便它们可以在任何地方使用(有点像“我可以吃蛋糕吗?”之类的问题。)

虽然我不认为这是一个可行的解决方案,但我真的不知道。

任何了解 Web Parts 和 Prism 的人可能会冒险解释这是否可行?

0 投票
4 回答
460 浏览

python - 为模块化和可重用性而开发:如何处理 While True 循环?

我最近一直在使用 pybluez 模块来扫描附近的蓝牙设备。我现在要做的是扩展程序以查找附近的 WiFi 客户端设备。

WiFi 客户端扫描仪需要有一个While True循环来持续监控电波。如果我把它写成一个直接的、一个文件程序,那就很容易了。

然而,我想要的是把它变成一个模块。我希望以后能够重复使用它,并且可能让其他人也使用它。我不知道如何处理循环。

假设第一个示例代码是“mymodule”,该程序将简单地将数据打印到标准输出。我希望能够在我的程序中使用这些数据,而不是让模块打印出来......

我应该如何编码模块?

0 投票
3 回答
1194 浏览

c - 使用 D.Knuth 伪随机发生器

我需要编写一个物理模拟软件,我需要使用D.Knuth 编写的伪随机生成器,因为它最适合我的需求。

虽然我知道如何在硬代码块中使用它(仅仅是#include“rng-double.c”),但我不太明白如何将它包含在一个模块化程序中,在主程序和主程序中都需要它在一些库中,然后我通过头文件链接回主库。

我需要的唯一函数是 ranf_start(seed) 来播种生成器和 ranf_arr_next() 来生成下一个数字。

我得到了一个很长的系列

几乎适用于随机数生成器代码中定义的每个函数。

我不是专家,所以我发现自己几乎处于死胡同。有出路吗?我目前正在尝试为 rng 编写一个头文件,尽管我还没有成功。

非常感谢大家。~J

编辑:从第一个答案所说,我需要编写头文件。我为生成器中的大多数函数都这样做了,但我无法为实际生成数字的函数编写它。我应该如何为这样定义的函数编写标题?