- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是一个真正的性能爱好者,但我也意识到执行自动化测试的重要性(直到更好的形式验证方法成为主流)。
缺点是,当您尝试针对可测试性进行设计时,您会开始引入接口(interface)来表示您的依赖项。如您所知,接口(interface)使您的调用动态分派(dispatch)到该依赖项上,并减少编译时的优化机会。
class MyDependency
{
void someMethod();
}
class MyUnit
{
// Concrete type reference of MyDependency allows
// to bypass the dynamic dispatch
this(MyDependency mayBeAMock)
{
mayBeAMock.someMethod();
}
unittest
{
// Now how can I get a mock of my dependency without to instantiate it.
auto dep = someBlackMagic.getMock();
auto uut = new MyUnit(dep);
}
}
确实存在一种更好的方法来单元测试类,而无需在生产中承担动态调度成本。如果需要,我可以负担执行单元测试的费用,但负担不起产品发布的费用。
我对 D 和 C++ 解决方案很感兴趣。
最佳答案
我在 D 中经常使用的一种技术是进行编译时策略替换:
private struct MyUtilImpl ( HTTPClient )
{
void foo ( )
{
HTTPClient.makeRequest("url");
}
}
version (unittest)
alias MyUtil = MyUtilImpl!FakeHTTPClient;
else
alias MyUtil = MyUtilImpl!RealHTTPClient;
它在本质上与经典的依赖注入(inject)非常相似,但我不是模拟 I/O 实用程序并通过接口(interface)进行交换,而是在编译时使用模板参数执行相同的操作。
它还有一个好处是不需要更改程序的其余部分就可以开始传递接口(interface)。
关于C++ 或 D : idiom to decouple classes without dynamic dispatch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37088958/
我们有两个系统,系统 A 将数据发送到系统 B。要求每个系统都可以独立于另一个系统运行,并且如果另一个系统宕机,则任何一个系统都不会崩溃。问题是在满足解耦要求的情况下,系统A与系统B通信的最佳方式是什
我有同一个第三方设备的两个 C 库。区别在于一个库(例如库 A)比另一个库(例如库 B)具有更多功能。我有两个使用该设备的大平台。平台 A 使用库 A,平台 B 使用库 B。 为了支持更多的平台和系统
我刚刚开始使用 Prism 和 Unity 学习 WPF MVVM。 将 View 与 View 模型解耦效果很好,但我不明白如何连接我的 View 模型和模型。 我觉得在我的 View 模型中创建一
大家好,我正在制作一个 Cocos2d-x 游戏,其中包含 gradle 文件,我一直在寻找提高构建时间的方法,我尝试谷歌搜索,甚至查看 Gradle 文档,但我似乎无法理解“到底是什么”解耦”项目是
我有一个相对简单的 DSL,我希望它比一堆手动编码的 java.util.regex.Pattern 语句 + 解析逻辑更可靠地处理。 引用最多的工具似乎是 ANTLR。我对它不熟悉,愿意尝试一下。但
有没有办法将 jsx 从组件的渲染函数移动到单独的文件?如果是这样,我如何在渲染函数中引用 jsx? 最佳答案 您可以使用 react-templates .它为您提供了标记和组件本身之间的准确分离,
我在这里使用了 django-environ 来设置环境变量,但它给了我 SECRET_KEY 错误。如何正确配置环境变量? 我还为此使用了 python-decouple 而不是 django-en
我正在尝试 Exercise 2 of Chapter 8.5在迈克尔·哈特尔的 Ruby on Rails Tutorial .练习如下: 按照第 8.3.3 节中的示例,浏览用户和身份验证请求规范
我被迫将我的 .env 文件保存在项目根目录之外的非标准路径中(完全在一个单独的目录中)。 假设我在 /var/projects/my_project 中有我的 Django 项目,尽管我在 /opt
我正在阅读有关依赖倒置和解耦的理论,但我看不出两者之间的区别。 依赖倒置谈论解耦功能组件,以便较高级别的组件不依赖于较低级别的组件。 解耦谈论同样的事情以及如何实现它。但随后我们的 IoC 容器让事情
我试图从heroku cli在heroku上部署django项目。因此,我创建了一个应用程序,然后从项目目录中运行了git push heroku master。然后我得到了错误: remote: -
我是一个真正的性能爱好者,但我也意识到执行自动化测试的重要性(直到更好的形式验证方法成为主流)。 缺点是,当您尝试针对可测试性进行设计时,您会开始引入接口(interface)来表示您的依赖项。如您所
我读过几篇文章(还有功能域建模一书),其中建议将域对象的状态与行为分离,但我无法理解这种方法相对于范围域模型的优势. 以下是覆盖域模型的示例: case class Account(id: Accou
我正在阅读这篇文章: http://danielribeiro.org/yes-you-can-have-low-coupling-in-a-symfony-standard-edition-appl
我有 300 多个类(class)。它们在某些方面是相关的。 为简单起见,所有关系都是 1:1。 这是一个示例图。 (在实际情况下,大约有 50 个关系对。) 注意:在某些情况下,某些关系可能不存在。
我的用户界面如下所示: +--------+---------------+ | model1 | model details | | model2 | here,
当我的 settings.py 有 ALLOWED_HOSTS = [] - 服务器工作正常。但是当我执行 ALLOWED_HOSTS = config('ALLOWED_HOSTS') - 它给出了
我是一名优秀的程序员,十分优秀!