我听到一些声音说从方法中检查返回的空值是糟糕的设计.我想听听一些原因.
伪代码:
variable x = object.method()
if (x is null) do something
Run Code Online (Sandbox Code Playgroud) 当数组中元素的顺序不重要或甚至可能发生变化时,断言两个对象数组相等的好方法是什么?
作为OO开发人员,也许我很难看到它的价值.他们给了什么附加价值?它们适合OO世界吗?
在阅读了关于这种反模式以及其中关于它的许多问题之后再次感到困惑.
如果我有一个域模型并捕获必须保存在数据传输对象中的数据,那么这会使我的域模型成为数据的包装器吗?在那种情况下,我将使用贫血域模型.但是,如果我在该包装器上添加足够的域逻辑,那么它在什么时候成为真正的域模型呢?
我得到的印象是,捕获域模型中必须保留的内容会违反良好实践并创建贫模型域模型反模式.然而,如果你使用关系数据库,就没有办法避免挑出构成对象状态的部分并保存它.
因为我对这些概念很困惑,所以我不确定我所写的内容是否有意义.随意要求澄清.
design-patterns domain-driven-design anti-patterns anemic-domain-model
如果我<h1>使用padding: 1.2emor设置元素样式padding: 10%,则相对于:
<h1>元素的字体大小?<h1>元素的高度?而且它是针对不同的em和%?
我正在尝试模拟/责任驱动的设计.在需要服务来检索其他对象的对象的情况下,我似乎有问题避免从模拟中返回模拟.
一个例子可以是检查上个月的账单是否已支付的对象.它需要一个检索账单清单的服务.所以我需要在我的测试中模拟billRetrievalService.同时我需要BillRetrievalMock返回模拟的Bills(因为我不希望我的测试依赖于Bill实现的正确性).
我的设计有缺陷吗?有没有更好的方法来测试这个?或者这是使用finder对象时需要的方式(在这种情况下查找账单)?
旁注:尽管Bill可能是一个值对象候选者,但当集合不包含值对象(例如Users)时,更广泛的问题仍然存在.
伪代码中的示例类:
class SumCalculator
method calculate(int1, int2) returns int
Run Code Online (Sandbox Code Playgroud)
测试这个的好方法是什么?换句话说,我该如何描述我需要的行为?
test1: canDetermineSumOfTwoIntegers
Run Code Online (Sandbox Code Playgroud)
要么
test2: returnsSumOfTwoIntegers
Run Code Online (Sandbox Code Playgroud)
要么
test3: knowsFivePlusThreeIsEight
Run Code Online (Sandbox Code Playgroud)
Test1和Test2看起来很模糊,需要测试一个特定的计算,因此它并没有真正描述正在测试的内容.然而test3非常有限.
测试这些类的好方法是什么?
我在PHP中开始使用命名空间的任务仍在继续.这次PHPUnit给了我一些问题.我的setup()方法是这样的:
$test = new \MyNamespace\NonPersistentStorage(); // works
$mock = $this->getMock('\\MyNamespace\\NonPersistentStorage'); // doesn't work
Run Code Online (Sandbox Code Playgroud)
getMock()方法仅导致PHP查找NonPersistentStorage类.不在命名空间内.
问:我需要更改什么才能让getMock()方法查找命名空间中的类?
编辑:双反斜杠不是问题.另见:手册 :(报价)
'在单引号字符串中,反斜杠转义序列使用起来更安全,但仍建议在所有字符串中转义反斜杠作为最佳实践.
编辑:对我来说有用的是Ignace R.答案的评论.
实体和值对象都是域对象.了解DDD中两者之间的区别有什么用?例如,将域对象视为实体或值对象是否会促成更清晰的域模型?