在讨论中,我不确定我说的时候是否正确:
“最好将对象作为参数而不是对象传递 。ID的“
所以我想我会在这里要求澄清。
这样做有什么好处:
public function doSomething(\Item $item)
{
return $item->getSomething() * 2;
}
通过这个:
public function doSomething($itemID)
{
$item = \Item::getByID($itemID); // Return an item based on ID
if ($item) // Check the object has been returned
{
return $item->getSomething() * 2;
}
}
说一个好处是你可以假设对象存在,这是真的吗,所以没有必要检查它是否存在?
答案 0 :(得分:4)
它被称为dependency injection,主要好处是您可以通过注入" doSomething()
"来完全隔离mock
方法。将对象放入方法中,因此测试doSomething()
并不依赖于Item本身的逻辑
答案 1 :(得分:0)
第一个解决方案在运行时可能会快一点。你应该更喜欢循环中的第二个内部。第二个按ID查找项目。