8

通常,我看到函数被称为

$content = getContent($isAdmin = false)

而函数声明就像

function getContent($isAdmin = true){
....}

为什么有人会在函数调用中添加创建变量并仅使用一次的重载!

我知道这使函数调用变得清晰,但是我们不应该使用 PHPDoc 块来代替吗?

4

2 回答 2

7

我有一种感觉,你被这么多的“浪费”深深地震撼了。

保持冷静,使用变量没什么不好,你应该经常使用它们。它们通常使您的代码更具描述性,甚至更快。

更具描述性的部分是这里的情况,如果您查看该行,您会看到哪个参数是因为现在它有一个名称。

但我们不应该改用 PHPDoc 块吗?

好吧,实际上这与(docblock)评论无关。即使在函数定义中,也没有对该参数的注释:

function getContent($isAdmin = true) {

这只是参数名称的定义。此外 docblock 参数将仅在您定义函数时出现:

...
 * @param $isAdmin bool (optional) true or false, true by default
...
function getContent($isAdmin = true) {

但是,这不是调用函数的地方:

$content = getContent($isAdmin = false)

因此,如果您查看该行(并且在按下任何热键或鼠标按钮之前),您已经阅读了该行。什么都不需要,只需要代码。甚至可以在记事本或未配置的 gedit 中使用。

$nonAdmin = false;
$content = getContent($nonAdmin);

顺便说一句,如果您的代码需要注释,这通常表明它太复杂了。此外,参数的名称比它的文档块重要得多。一个好的名称通常意味着您不需要为其添加 docblock 标签(这意味着:需要维护的代码更少),因为名称本身就说明了问题。

现代 IDE 也通过静态分析知道参数的类型,因此您也不需要 docblock 标签。所以不,你不应该总是使用 PHPDocblocks。

于 2012-10-07T18:28:56.360 回答
3

像这样写:

$content = getContent($isAdmin = false)

甚至可以$isAdmin在函数范围之外定义,即如果您发出 a var_dump($isAdmin),您将得到bool(false).

这样你就可以保存一个 var 赋值:

$isAdmin = false;
$content = getContent($isAdmin);
...
someStuff($isAdmin);
于 2012-10-07T18:32:57.730 回答