gpt4 book ai didi

language-agnostic - 得墨忒耳定律和返回值

转载 作者:行者123 更新时间:2023-12-04 16:56:35 27 4
gpt4 key购买 nike

根据Law of Demeter ,你能在返回的对象上调用方法吗?

例如。

<?php
class O
{
public function m($http)
{
$response = $http->get('http://www.google.com');
return $response->getBody(); // violation?
}
}
?>

$http->get() 返回一个对象。这算作在 M 中创建/实例化的对象吗?如果你不能调用它的方法(根据 LoD),你会如何处理这种情况?

最佳答案

一方面,$response似乎是在方法 m 中创建的,所以答案似乎是肯定的。

另一方面,由于 $http已转入 m$http->get()返回的对象现在由 $response 表示可能是 $http 的成员可能是在进入 m 之前创建的.

考虑到定律的“只有一个点”(或者,在本例中为箭头)的解释,将函数体重写为 return $http->get('http://www.google.com')->getBody();表明这可能是违规行为。将中间成员保存为局部变量似乎是一种避免单点原则的狡猾方法。

我无法给出明确的答案。在某种程度上,我认为这取决于您对 $http->get() 的信任程度。给你一个新创建的对象,而不是一个预先存在的成员。

关于language-agnostic - 得墨忒耳定律和返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3006485/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com