我最近看到了很多这样的代码:分配的条件语句
if ($foo = $bar->getFoo())
{
baz($foo);
}
这被认为是好还是不好的做法?
例如,NetBeans IDE中发出通知,如果你使用这种代码:
可能意外分配,在条件 任务应该是 避免
你觉得呢?
我最近看到了很多这样的代码:分配的条件语句
if ($foo = $bar->getFoo())
{
baz($foo);
}
这被认为是好还是不好的做法?
例如,NetBeans IDE中发出通知,如果你使用这种代码:
可能意外分配,在条件 任务应该是 避免
你觉得呢?
这是一个有用的工具,我不得不承认偶尔使用它来避免额外的作业。在一方面,它可能是由不好的做法,有些是因为:
在另一方面:
我应该注意,我尽量避免它,因为我发现它在大多数时候都不太可读,但它纯粹是个人偏好。我发现它很有用,我使用它。
这是一种容易出错的方法,但这是PHP中的常见做法。特别是在目录遍历等事情中,你正在做的事情如while (($dir = readdir($handle)) !== FALSE)
如果你可以避免它。躲开它。
'!== FALSE'是多余的,但是使得语句更易于理解。但为什么不使用'== TRUE'?它更简单! – T30 2016-01-14 13:10:12
如果目录为空,则readdir返回FALSE。否则,它将返回目录中的下一个项目。你必须检查是否为假,以继续阅读。它应该做一个三重平等的严格类型检查。 – jlindenbaum 2016-01-16 15:55:03
虽然这是有效的语法,结果将如预期的那样,但这是一个坏习惯。缺乏可读性,当你的意思是==时,有一种潜在的坏习惯,当你试图在应用程序中发现真正的错误时,你的眼睛会一直回到这一行。我不会使用这种写作风格。在这种情况下,只需获取返回值,然后验证返回值......或更好,然后使用异常处理来避免陷入大量if语句。
+1这是C日剩余的,这是常见(不好)的做法。很多人仍然这样做,因为他们认为这使他们[看起来很聪明](http://stackoverflow.com/questions/2101875/what-are-some-programming-questions-or-mistakes-you-get-wrong-只是,随你-GET-b/2151844#2151844)。 – 2010-05-14 18:08:16
我一直使用这个语法......我发现它100%可读,因为我很习惯看到这种线。为这项任务添加额外的代码行看起来像是浪费空间给我。
代码是要读取的。如果额外的一行代码增加了可读性 - >添加一行。我不想继承你的缩小的代码。 – 2016-08-05 14:30:52
你的意思是if($ foo == $ bar-> getFoo())? – 2010-05-14 14:38:48
没关系:) – DuoSRX 2010-05-14 14:39:29
这显然飞过了我的头:)所以条件是检查$ bar-> getFoo()不会导致错误?是对的吗? – 2010-05-14 14:47:33