条件分配

时间:2010-05-14 14:34:29

标签: php

我最近看到了很多这样的代码:

if ($foo = $bar->getFoo())
{
    baz($foo);
}

这被认为是好的还是坏的做法?

例如,如果您使用此类代码,Netbeans IDE会发出通知:

  

可能的意外分配,   条件中的任务应该是   避免

您怎么看?

4 个答案:

答案 0 :(得分:4)

这是一种让错误潜入的简单方法,但这在PHP中很常见。特别是在像while (($dir = readdir($handle)) !== FALSE)

这样的目录遍历中

如果可以避免它。避免它。

答案 1 :(得分:4)

这是一个非常有用的工具,我不得不承认有时使用它来避免额外的任务。一方面,有些人可能会做坏事,因为:

  • 这不是其他常用语言的可用成语
  • 不太可读

另一方面:

  • 隐式布尔转换在其他语言中不会发生,但它们会被广泛计算在它们确实存在的位置。相反,条件赋值运算符存在于Ruby和Javascript(作为示例)中,但不存在于PHP中。我们是否应该仅将语言结构的使用限制在所有类似语言中?可能不会。
  • 对谁不太可读?

我应该注意到我确实试图避免它,因为我发现它在大多数时候都不太可读,但这纯粹是我个人的偏好。在我发现它有用的地方,我使用它。

答案 2 :(得分:4)

我一直使用这种语法......我发现它100%可读,因为我已经习惯于看到这种线条了。为分配添加额外的代码行似乎浪费了我的空间。

答案 3 :(得分:2)

虽然这是有效的语法,但结果会如预期的那样,但这是一个坏习惯。缺乏可读性,当你想要==时,有可能养成放置=的错误习惯,当你试图在应用程序中找到真正的错误时,你的眼睛将继续回到这一行。我不会用这种写作风格。在这种情况下,只需获取返回值,然后验证返回值......或者更好的是,使用异常处理来避免因许多if语句而陷入困境。