问题标签 [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.
c# - 使用委托而不是接口进行解耦。好主意?
在编写 GUI 应用程序时,我使用“控制”或“协调”应用程序的顶级类。顶级类将负责协调诸如初始化网络连接、处理应用程序范围的 UI 操作、加载配置文件等事情。
在 GUI 应用程序的某些阶段,控件被移交给不同的类,例如,一旦用户进行身份验证,主控件就会从登录屏幕切换到数据输入屏幕。不同的类需要使用顶层控件所拥有的对象的功能。过去我会简单地将对象传递给从属控件或创建一个界面。最近我已经改为传递方法委托而不是整个对象,主要原因有两个:
- 单元测试时模拟方法比模拟类容易得多,
- 它通过在类构造函数中准确记录下级类正在使用哪些方法,使代码更具可读性。
一些简化的示例代码如下:
我的问题是,虽然我更喜欢这种方法,而且这对我来说很有意义,但下一个开发人员如何找到它?在示例和开源 C# 代码中,接口是解耦的首选方法,而这种使用委托的方法更倾向于函数式编程。我是否可能让后续开发人员低声咒骂什么是违反直觉的方法?
javascript - 如何将javascript编程与框架解耦?
我有一个关于 Javascript 框架的问题。我在我的应用程序上使用 ExtJs,但是许可等问题有很多问题,所以我想知道这件事。
有没有办法在开发 Javascript 时遵循一些策略,以便我可以轻松地从一个 Javascript 框架切换到其他框架?
database-design - 如何使用 BDUF 将应用程序的敏捷开发与数据库分离?
天,
我正在阅读 Dan Chak 的文章“数据库作为堡垒”,该文章来自优秀的书“每个软件架构师应该知道的 97 件事”(经过消毒的亚马逊链接),这表明不应使用敏捷方法来设计数据库。
有一个关于敏捷方法和数据库的 SO 问题“敏捷开发和数据库更改”,其中有一些涵盖敏捷开发方法的优秀答案。事实上,其中一个答案为每次更新数据库所需的内容提供了一个绝妙的想法。;-)
但是在阅读了 Dan Chak 的文章后,我想知道敏捷方法是否真的适合大型系统。
这当然会引出一个问题,即如何最好地为与 BDUF 数据库设计交互的应用程序解耦敏捷方法,而不在最终采用的设计中添加复杂的转换层?
有什么建议么?
干杯,
asp.net-mvc - .net mvc 单个管理部分多个站点
期望的结果:
4 个面向客户的站点作为单独的项目 1 组所有四个站点都使用的管理代码
我目前的设置是 4 个项目:
模型/实体的核心
存储库数据
控制器的控制器
浏览网页
现在,Web 项目包含面向管理员和面向客户的视图。我想将其拆分为一个管理项目和 4 个“客户”项目。
我在谷歌上从网络应用程序引用网络应用程序方面收效甚微。我在 haacked.com 上阅读过有关区域的信息,但这似乎不太正确。我不是特别想在 dll 中嵌入视图,因为这在调试/编码标记时会很痛苦。显然我不想要代码的多个副本。
谁能指出或建议可能的方法来做到这一点?我有点难过。
c# - 使用接口与 Linq-to-Sql 进行解耦
我正在将模型类重构为接口。模型类是使用 Linq-to-Sql 自动生成的。
InsertOnSubmit 方法采用 Foo 的实例,而不是 IFoo。我可以将实例内联转换为 (Foo) 并且这有效,但是有没有更清洁的方法来做到这一点?
我已经在使用 StructureMap,我可以在 Add 方法中添加一个属性来根据我的映射解析类型吗?
或者我可以覆盖任何模型类方法,或者使用部分事件来完成这个吗?
python - 在 Python 项目中管理资源
我有一个 Python 项目,其中使用了许多非代码文件。目前这些都是图像,但我将来可能会使用其他类型的文件。什么是存储和引用这些文件的好方案?
我考虑只是在主目录中创建一个文件夹“资源”,但是有一个问题;我的项目的子包中使用了一些图像。以这种方式存储这些图像会导致耦合,这是一个缺点。
此外,我需要一种访问这些文件的方法,该方法与我当前的目录无关。
c# - C# 中“使用”指令关键字的替代方案?
我刚看完 NDC 的 Bob Martin 的一集,他说页面顶部的 C# 中的“使用”指令很糟糕,因为它们在组件之间创建/暗示了紧密耦合。
有什么方法可以在不添加项目引用和 using 语句的情况下使用外部 .dll?
我记得 V6 曾经让您通过 ProgId 的字符串创建一个对象——我不确定这是我正在寻找的技术,但它是一个不需要项目引用即可使用的语言示例dll。
编辑:这是会议的链接。抱歉,演讲中没有确切的报价或分钟,我是凭记忆进行的。
asp.net - 处理安全与解耦
我正在尝试设计一个 3 层的应用程序:
1) 数据访问层
2) 业务层
3) UI
我尝试保持类解耦,因此在业务层上我为数据访问类创建了接口,如下所示:
我将接口作为参数传递给服务构造函数:
但是例如在 CountryService 上,我需要加载当前用户及其权限,以便检查是否可以应用该操作:
这意味着我必须实例化 SecurityDataAccess 对象并将其传递给我的业务层程序集上的 SecurityService 的构造函数,我试图避免这样做以保持对象解耦。现在我什至没有在我的业务程序集中引用任何 DataAccess 程序集。
我正在考虑在这里使用 IoC 容器。使用外部配置,我可以从配置文件中获得正确的类/程序集。但我不确定这是否是正确的解决方案,因为据说 IoC 容器应该在一个地方使用以保持简单,并且大多数时候它应该是顶级程序集(UI 程序集)。
有人有解决这个问题的建议吗?
c# - 在引擎/控制器中注册用户界面元素
我目前正在编写一个带有标准 UI 控件的小游戏。
到目前为止它工作得很好,但我不喜欢的是我正在管理代码隐藏文件中的控件。(C#)
当我试图解耦所有元素时,我希望有一个单独的引擎/控制器来处理我的用户界面的所有数据管理和逻辑。
是否有可能向引擎注册控件,这样我就不需要在我调用的每个方法中传递它们?
目前,每次调用该函数时,我都被迫通过控件..
提前致谢!
service - Prism 应用程序 CAL 中的菜单服务
我正在尝试创建一个 Prism (CAL) 框架(这是我第一次尝试 CAL)并且在设计用于注册区域菜单项的服务时遇到了困难)。这是我到目前为止想出的...
有没有更好的方法来做我想做的事情?干杯,杰森