函数是否应该返回null
?应该使用一个函数:return null;?
E.g.
function test()
{
return null; // vs return;
}
后者被认为是不好的做法还是无关紧要?
PS
不管是不好的做法不应该是主观的恕我直言。
函数是否应该返回null
?应该使用一个函数:return null;?
E.g.
function test()
{
return null; // vs return;
}
后者被认为是不好的做法还是无关紧要?
PS
不管是不好的做法不应该是主观的恕我直言。
如果您不返回任何内容,只需使用return;
或者在函数结束时完全省略它。
如果您的功能通常会返回某些内容,但由于某种原因,请不要使用return null;
。
这与您的操作方式类似,例如在C中:如果你的函数没有返回任何东西,它是void
,否则它通常会返回一个有效的指针或NULL。
这对PHP有什么影响? PHP不是C. PHP中没有返回值与'NULL'完全相同,没有void变量类型。 – hakre 2012-01-05 20:19:18
确实如此,但更清楚的是返回值可能会被调用者使用。 – ThiefMaster 2012-01-05 20:21:25
除非没有任何文档,否则我很难说。你先读什么?函数体的最后一行或返回类型文档就在它的头部? – hakre 2012-01-05 20:22:44
总是一个很好的习惯来展示你回来的东西。
但作为一个尖,下面都是等效的:
function test()
{
return null;
}
function test()
{
return;
}
function test()
{
}
在所有情况下对var_dump(test());
是:
NULL
PHP中的未定义的函数的返回值总是等于NULL
,所以它没有任何区别(运行时会这样做)。
有什么不同之处在于,您可以使用docblocks并记录@return
标签的返回值,以便在此处提供巧妙的IDE提供信息。
如果你想每不是,返回值是预期的docblock信号,您可以使用void
:
* @return void
如果你想发出信号返回NULL
意,您可以使用null
或NULL
(取决于你的代码风格的大写PHP标准常量):
* @return null
或:
* @return NULL
这应该使编码人员的意图可见,如通过PHP这总是null
作为事实返回值。
往下看:
更多细节及更新的信息in PeeHaa's answer to this same question。
从语义上讲,我不认为两者有区别。按照PHP documentation on return:
如果没有提供任何参数,那么括号必须被省略 将返回NULL。
我个人喜欢把NULL放在那里。那么返回什么是没有问题的,这使得您的调试变得更容易一些。
但是,“毫无疑问”是什么被返回只是'回来;'... – 2012-01-05 20:35:19
这是真的。我想,我只是喜欢冗长。当我从现在开始,在深夜研究我的代码时,试图弄清楚什么是坏的,我喜欢把所有东西都放在我面前(没有任何暗示)。个人喜好。 – 2012-01-05 21:04:01
PEAR最佳实践页面在其“Return early”示例中执行return null
。这增加了我们应该始终努力做到的可读性,因为我们为人类而不是计算机编写代码。
来源:http://pear.php.net/manual/en/standards.bestpractices.php
这实在是太傻返回null
如果有什么返回。做return;
显示没有实际返回任何东西的意图。并明确了该功能的功能。
PHP没有void
返回类型的事实不应该成为让人不清楚的原因。还要注意的是PHP 7.1将提供支持the void
return type:
function test(): void {
return null; // this will error
}
如果您有这表明'null'值意味着一些具体的事情,的做法,即函数的参数包含错误的数据 - 然后继续。但是,布尔返回通常绰绰有余。我在匿名函数中使用'null'来期望返回实际数据,所以boolean'false'被认为是可接受的返回值,但是'null'不是。 – ashein 2012-01-05 20:17:51
我们可以得出结论,它是多余的,因为运行时已经这样做了。但是这并不会使它变得糟糕或无用。答案是明确的。更有趣的是,你不应该写'NULL'吗? – mario 2012-01-05 20:19:08
@mario你的意思是'null'与'NULL'? – PeeHaa 2012-01-05 20:20:02