7

这是一个长期存在的问题,我在许多热火朝天的编码会议中遇到过。

一个人以这种方式编码,另一个人以这种方式编码。所以经过多次推拉,我很好奇......有没有正确的方式来表达 PHP 'IF ELSE' 语句?

我个人使用:

if ($variable == 'setvalue')
{
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}

尽管我已经提出了其他选择,但经过多次争论,例如:

if ($variable == 'setvalue')
{
    $variable = executefunctiononvariable($variable);
}
else
{
    $variable = executedifferentfunctiononvariable($variable);
}

或者

if ($variable == 'setvalue')
    $variable = executefunctiononvariable($variable);
else
    $variable = executedifferentfunctiononvariable($variable);

或者

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}
4

12 回答 12

22

我个人将我的 if/else 格式化为最后一个:

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}

在我看来,您的版本是 1 和 3 的混合体。

我还与完成所有这些工作的编码器一起工作,但从未听说过标准编码器。

php网站使用最后一个:http ://ca2.php.net/manual/en/control-structures.elseif.php

在某些情况下,当 if 语句总是很短时,我也会使用第二个示例。如果它有可能变得更长(每个超过 1 行),我会做 #1。我尽量避免 #2,因为以后很难添加 {}。

于 2009-02-15T04:34:42.943 回答
8

我使用最后一个:

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}    

话虽这么说,你选择哪一个并不重要,只要确保你是一致的。

于 2009-02-15T04:34:52.647 回答
7

正确的方法是遵循项目的编码标准。如果没有,请采用 PHP-FIG、Zend、Symfony 等中的一种。

这种形式似乎很受欢迎:

if (condition) {
    statements
} else {
    statements
}

对于变量赋值,只有当语句可以清晰地放在一行时,我才会使用三元:

$variable = !empty($foo) ? $foo : 'default';

更新:我已经删除了关于多行三元语句的部分,因为我不再认为这是一种明智的做法。

于 2009-02-15T04:55:47.293 回答
4

我个人比较喜欢:

if(something){
    doSomething();
}
elseif(somethingElse){
    doSomethingElse();
}
else{
    doAnotherThing();
}
于 2009-02-15T10:10:50.830 回答
4

不要忘记

if (expression):
   // code goes here
elseif (another expression):
   // code goes here
else:
   // code goes here
endif;

当我做一些标签汤时,我个人喜欢这种结构。

于 2009-05-14T20:10:30.083 回答
3

最重要的是,从事项目工作的程序员几乎都遵循相同的编码准则。因此,开会并选择其中一个,然后坚持下去。

于 2009-02-15T04:34:07.593 回答
3

我曾经一直这样做 (2),但由于 Sun 的编码约定使用 (4),所以在 Java 编程中被打败了。所以现在我已经习惯了(4)。我最近一直在做一些 C#,它似乎默认使用 (2)(叹气,我们又来了)。

在 PHP 中,我习惯了(4),但(2)也很好。我一点也不喜欢(1 )

并且(3)是危险的。就我个人而言,我认为语言的语法应该需要大括号,即使它只是一个语句。避免您陷入麻烦。我认为这就是 Perl 从记忆中做的方式。

我也讨厌人们这样做:

if (something) {
  // do something
}
else if (something else) {
}

那个让我发疯。所以我只觉得(2)和(4)是可以接受的。我不在乎它是哪一个,只要它始终如一地完成,最好在语言的约定范围内。

于 2009-02-15T05:15:19.960 回答
2

没有正确或错误的方式,这是一种意见。就个人而言,我最喜欢最后一个(1TBS???)。我从不使用没有大括号的那个,我认为它总体上是不好的风格。

唯一能真正为您回答这个问题的人是其他将要编写代码的人。每个人都同意编码标准是很重要的。您选择哪种标准并不重要,因为每个人都使用它。

于 2009-02-15T04:37:39.303 回答
2

PEAR 编码标准是PHP编码标准。我建议您习惯它,因为您会在其他项目中找到它,例如 Zend、Doctrine、Symfony、Horde 等等。

http://framework.zend.com/manual/en/coding-standard.coding-style.html#coding-standard.coding-style.control-statements.if-else-elseif

于 2009-02-15T05:15:01.130 回答
1

简而言之,这不是正确的做法。只要它有效,任何你觉得最好的,你都可以使用。你应该选择一个然后坚持下去,它会让你的代码更容易识别。

唯一的问题是,如果您不包含“{”字符,则您只能使用一个表达式或函数。

此外,如果您只想定义变量,则可以使用以下代码:

$variable = (CONDITIONAL STATEMENT) ? "It was true" : "It was false"; 
于 2009-02-15T04:32:40.890 回答
0

在我的公司,我们使用:

if ($variable == 'setvalue')
{
    $variable = executefunctiononvariable($variable);
}
else
{
    $variable = executedifferentfunctiononvariable($variable);
}

只要有标准,我并不重要

于 2009-02-15T10:27:59.260 回答
0

真的对我来说......这并不重要。我相信您应该能够毫无问题地阅读任何一种方式。花括号是否在新行上真的很重要吗?右括号后是否有空格真的很重要吗?

只要代码以至少尝试使其可读的方式完成,我真的不在乎。

有正确的方法吗?好吧,如果有,那么为什么我们可以选择不同的方式呢?

于 2009-08-05T21:38:55.450 回答