问题标签 [decoupling]
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.
vb.net - 帮助将 Crystal Report 与 CrystalReportViewer 解耦
我正在使用带有 VB.NET 的 Visual Studio 2005。
我有许多 Crystal Reports,每个都有自己的关联对话框资源,其中包含 CrystalReportViewer。类定义如下所示:
我基本上实例化了对话框,将 theItems 设置为我想要的列表,然后调用 ShowDialog。
我现在需要将这些报告中的几个合并到一个报告中(可能像这样),但是在报告中加载字段的代码在对话框中。
我将如何将报告初始化与对话框分离?
谢谢!
php - 教如何制作易于维护且耦合较少的程序的书籍/教程?
我是一名 PHP 程序员,我真的很想提高我的代码质量,最重要的是我想在编程方面做得更好。
你们会建议我读什么书、教程或文章来教导如何制作耦合度较低且易于维护的程序?PHP 有什么特别的技巧,尤其是 CakePHP 框架吗?
提前致谢!
oop - 内聚和解耦,它们代表什么?
什么是内聚和解耦?我找到了关于耦合的信息,但没有找到关于解耦的信息。
dependency-injection - 软件层的依赖注入和解耦
我正在尝试实施依赖注入以使我的应用程序测试人员友好。我有一个相当基本的疑问。
数据层使用 SqlConnection 对象连接到 SQL 服务器数据库。SqlConnection 对象是数据访问层的依赖项。根据依赖注入的规律,我们不能 new() 依赖对象,而是通过构造函数参数接受它们。不想惹恼 DI 之神,我尽职尽责地在我的 DAL 中创建了一个接受 SqlConnection 的构造函数。
业务层调用 DAL。因此,业务层必须传入 SqlConnection。表示层调用业务层。因此,它也必须将 SqlConnection 传递给业务层。
这对于类隔离和可测试性非常有用。但我们不是只是将 UI 和业务层与恰好使用关系数据库的数据层的特定实现结合起来吗?
为什么表示层和业务层需要知道底层数据存储是 SQL?如果应用程序需要支持除 SQL 服务器之外的多个数据源(例如 XML 文件、逗号分隔文件等)怎么办?此外,如果我添加另一个我的数据层所依赖的对象(例如,第二个数据库)怎么办。现在,我必须修改上层以传入这个新对象。
我怎样才能避免这种旋转木马并在没有痛苦的情况下获得 DI 的所有好处?
c# - 带有 Web 配置的 TDD
所有伟大的故事都以这四个神奇的词开头……我继承了一个系统……等不及了!这是不对的!
无论如何,我的幽默尝试现在已经过去了,我没有得到更多我必须支持现有服务的东西。
使用该服务有很多问题,例如创建一个人的记录,您需要调用服务的4个不同部分。
因此,与我的经理一起,我们决定我们需要在顶部添加另一层来为常见请求添加外观,以简化创建新站点时执行它们的数量和正确顺序。
如果有人想避免上述华夫饼,我的问题就从这里开始
所以我想在我正在做的工作上使用 TDD,但是我继承的服务(它将成为我们的数据层)已经与位于 Web.Config 中特定连接字符串节点中的数据库连接字符串强耦合。
我遇到的问题是,将服务与配置文件分离将花费我数周的时间,而我没有。
所以我不得不将带有预期节点的 App.Config 文件添加到我的测试项目中。
这样做可以吗,还是我应该开始投入一些时间来将数据库配置与数据层分离?
function - 何时将代码拆分为函数的黄金法则是什么?
将代码拆分为函数和类以实现模块化/解耦是很好的,但如果你这样做太多,你会得到非常碎片化的代码,这也不好。
何时将代码拆分为函数的黄金法则是什么?
unit-testing - 如何对依赖于另一个类来改变某物状态的类进行单元测试?
我有一个类A
,它包含一个类的实例B
,以及调用函数foo
的函数,它更新了的状态。这是一个代码示例(在 Javascript 中):A
set
B
B
如何对foo
函数进行单元测试,同时保持测试A
不依赖于B
(使用模拟和存根等等)的实现?
web-services - 解耦是否有利于重新设计遗留应用程序?
我在一家经营多家互联网商店的公司工作。我们即将彻底重写整个代码:网站内容和产品管理、订单处理、合作伙伴关系、会计、客户群等。目前我们有一个系统,所有的东西(所有内部管理站点、业务逻辑和互联网商店网站)都紧密耦合在单个 LAMP 实例上运行,并且绝对所有数据都位于一个字面上的单个垃圾数据库中。正因为如此(也因为 10 年的发展,部分从 perl 重写,php 代码质量)引入了新的网络商店,重新设计任何现有的或改变任何逻辑都是不可能的任务。
为了不仅重写旧代码而且优化系统架构,我肯定决定将网站(相互)分离,将“业务核心”与网站和业务核心相互分离。
从某一点来看,所有网店都主要销售一种常见的产品基础,它们就像镜子一样,有时只是针对国际客户进行了不同的设计(标题和描述可能会有所不同)。我们销售的东西是一种服务产品,它依赖于当地的合作伙伴,但具有共同的预定义产品范围。但是在几个城市我们有特价,在其他城市我们提供除了普通范围之外的增强产品范围。因此,我们还运行专注于单个城市的专门网站、仅销售特价商品的网站等等。
与每个网站都有自己的产品数据库(有时是另一个网站的副本)的解决方案相比,我正在考虑将所有产品描述信息、不同城市和/或不同站点的可用性和价格组合到一个独立的产品管理系统中并通过 SOAP 提供所有信息。每次任何用户访问任何站点时,站点都会使用该服务(提供一些参数)然后列出产品。显然,可以开发通用访问库以将其包含到每个站点。
1)该解决方案是否足够?如果没有缓存,它会执行得足够快吗?我们的资源有限(1.5 开发人员),所以我尽量不(如果可能)引入额外的技术复杂性,例如在每个站点上使用 memcached 的要求。
2)假设,我以解耦的方式重建系统。收益是否足以让我自己参与 memcached 等的所有工作?
3)在SOAP服务器端缓存数据是合理的,而不是在网站上继续发出数千个soap请求?
所有系统将被解耦,其中一些相关的网站例如订单处理,客户授权(所有网站通用),收款集成等。如果订单处理时需要下订单-site通过SOAP远程把它放到订单处理系统中,然后反过来暴露自己的SOAP服务器来接收订单状态更新。
4) 以 SOAP 为中心的解耦哲学对吗?
使用的技术是 nginx、php、MySQL
java - 解耦 - OOP
我有一个简单的问题(使用 Java)。我有两个类,一个代表 Document,第二个代表 Word。
Document 类需要了解有关 Word 中保存的单词的一些信息。我的问题是,解耦这两个类的最佳方法是什么?我有两个选择:
类之间没有联系,每次我在 Document 中调用一个方法时,我都会将一个 Word 对象传递给它(所以我有一个带有 main 方法的第三个类,它同时启动 Document 和 Word)。
在 Document 中声明一个 Word 的私有对象。
需要注意的一点是,我只有一个用于 Word 的对象和一个用于 Document 的对象。我不会为每个新文档或单词创建一个新对象。我将整个文档的列表存储在 Document 中,并将整个单词的列表存储在 Word 中。
谢谢!
c - 如何设计程序,使 GUI 和程序逻辑解耦
我开始使用 GTK+ 编写我的第一个 C 程序。我在一定程度上学习了 C,并且使用过 PyGTK,所以我对两者都有很好的理解。但是,我从来没有用 C 创建过 GUI 程序。虽然它可以工作,但我的最后一个 GUI 程序有点乱,因为程序逻辑都混入了 GUI 的东西。我读过最好以分离的方式编写 GUI 和程序逻辑,这样如果你切换 GUI 库,它就会很轻松。
这是正确的吗?假设我正在向视觉列表中添加一个项目。我是否有一个将项目添加到逻辑列表并在查看该列表然后更新 gui 的函数中运行的函数?
例如,
这样做的一般过程是什么?
任何意见,将不胜感激!
编辑:
感谢您提供有关 MVC 的建议。您能否在我给出的示例中解释一下?那里有很多关于 MVC 的信息,我很难弄清楚它如何应用于我的代码示例。