Php 作业状况良好。这是一种好的做法吗?

Php 作业状况良好。这是一种好的做法吗?,php,coding-style,Php,Coding Style,考虑: if (a = 10) { /* do something */ } 我感兴趣的是,这是否是一件好事,以及为什么,因为我不得不经常面对它。先谢谢你 请考虑一个更复杂的例子。你喜欢什么?为什么 function getSomeData() { return rand(0, 5); } 第一: if ($result = getSomeData()) { print($result) } 或第二: $result = getSomeData(); if ($res

考虑:

if (a = 10)
{
   /* do something */
}
我感兴趣的是,这是否是一件好事,以及为什么,因为我不得不经常面对它。先谢谢你

请考虑一个更复杂的例子。你喜欢什么?为什么

function getSomeData()
{
    return rand(0, 5);
}
第一:

if ($result = getSomeData())
{
    print($result)
}
或第二:

$result = getSomeData();
if ($result)
{
    print($result);
}

这是绝对可怕的,在你检查条件的情况下,你不尝试做作业。我甚至不确定这是否可行,以及if语句的结果如何

要么这样做:

if ( a == 10 ){ /* do stuff */ }
a = 10;
if ( /* condition here */ ){ /* do stuff */ }
或者这样做:

if ( a == 10 ){ /* do stuff */ }
a = 10;
if ( /* condition here */ ){ /* do stuff */ }
我相信你把单打误认为双打了

编辑:


为了响应更复杂的情况,您必须在if语句中放置boolean(取决于编程语言,这将返回错误或不返回错误)。在不返回布尔值的if语句中放置任何其他内容实际上是一件不好的事情。

这绝对糟糕,在检查条件的情况下,您不会尝试执行赋值。我甚至不确定这是否可行,以及if语句的结果如何

要么这样做:

if ( a == 10 ){ /* do stuff */ }
a = 10;
if ( /* condition here */ ){ /* do stuff */ }
或者这样做:

if ( a == 10 ){ /* do stuff */ }
a = 10;
if ( /* condition here */ ){ /* do stuff */ }
我相信你把单打误认为双打了

编辑:

为了响应更复杂的情况,您必须在if语句中放置boolean(取决于编程语言,这将返回错误或不返回错误)。在不返回布尔值的if语句中放置任何其他内容实际上是一件坏事。

没有什么大神奇

这里,赋值返回的值就是被赋值的值

在您的例子中,它是
(a=10)
=>10=>非零=>因此为“true”

所以,它总是返回真的

没有什么大的魔力

这里,赋值返回的值就是被赋值的值

在您的例子中,它是
(a=10)
=>10=>非零=>因此为“true”


因此,它总是返回true

在这个特定的例子中,“if”是不必要的,矫揉造作的返回总是10

这将是更多的相互询问

if(a = b) 
{ 
// do stuff 
}
在这种情况下,我更喜欢用另一对()将其环绕,如:

在这里,你向另一个编码员展示你确切地知道你在做什么


一个好的规则:如果你必须思考10秒以上才能理解一个条件,也许有另一种表达方式在这个特定的例子中,“如果”是不必要的,假装的返回总是10

这将是更多的相互询问

if(a = b) 
{ 
// do stuff 
}
在这种情况下,我更喜欢用另一对()将其环绕,如:

在这里,你向另一个编码员展示你确切地知道你在做什么


一个好的规则:如果你必须思考10秒以上才能理解一个条件,也许有另一种表达方式

不,一般来说,这不是好的做法。在这种情况下,根据语言的不同,它要么抛出错误(因为
a
不是布尔值,要么赋值不返回值),要么总是求值为true(除
0
“正常”求值为true以外的整数)。在这两种情况下,
if
语句似乎都是不必要的。一般来说,这不是一种好的做法。在这种情况下,根据语言的不同,它要么抛出错误(因为
a
不是布尔值,要么赋值不返回值),要么总是求值为true(除
0
“正常”求值为true以外的整数)。在这两种情况下,
if
语句似乎都是不必要的。否,它将在Java中引发异常:类型不匹配:无法从int转换为booleanNo,它将在Java中引发异常:类型不匹配:无法从int转换为boolean使用另一对大括号包围条件不起任何作用。所以我不会说你在向他们展示你知道自己在做什么。如果你想对其他程序员说些什么,请使用更明显正确的注释或代码。@justin为什么要使用无用的括号?这恰恰相反,它向其他人表明你不知道自己在做什么@svick他们是括号()不是一对括号{}@Fraser,是的,你是对的,我总是搞不清楚什么术语指的是什么类型的括号。我肯定会想10秒钟以上为什么你的代码使用双括号。用另一对括号包围条件没有任何作用。所以我不会说你在向他们展示你知道自己在做什么。如果你想对其他程序员说些什么,请使用更明显正确的注释或代码。@justin为什么要使用无用的括号?这恰恰相反,它向其他人表明你不知道自己在做什么@svick他们是括号()不是一对大括号{}@Fraser,是的,你是对的,我总是搞不清楚什么术语指的是什么类型的括号。我肯定会想10秒钟以上为什么你的代码使用双括号。