如何正确格式化PHP'IF ELSE'语句?

时间:2009-02-15 04:29:40

标签: php code-formatting readability if-statement semantics

这是一个长期存在的问题,我在许多热门和热情的编码会话中遇到过。

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

我个人使用:

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

经过多次争论后,我已经看到了其他选项,例如:

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

OR

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

OR

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

12 个答案:

答案 0 :(得分: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,因为以后很难添加{}。

答案 1 :(得分:8)

我使用最后一个:

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

话虽如此,你选择哪一个是非常不重要的,只要确保你 一致

答案 2 :(得分:7)

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

此表单非常受欢迎:

if (condition) {
    statements
} else {
    statements
}

对于变量赋值,如果语句可以合理地放在一行上,我将只使用三元

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

更新:我已经删除了有关多行三元语句的内容,因为我不再认为这是明智的做法。

答案 3 :(得分:4)

我个人更喜欢:

if(something){
    doSomething();
}
elseif(somethingElse){
    doSomethingElse();
}
else{
    doAnotherThing();
}

答案 4 :(得分:4)

不要忘记

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

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

答案 5 :(得分:3)

最重要的是,在项目上工作的程序员几乎都遵循相同的编码指南。所以举行会议并选择其中一个,然后坚持下去。

答案 6 :(得分:3)

我曾经一直做(2)但是从Sun编程惯例使用(4)得到了Java编程。所以现在我已经习惯了(4)。我最近做了一些C#,默认情况下似乎使用(2)(叹气,我们再来一次)。

在PHP中习惯我做(4)但是(2)也很好。我不喜欢(1)

而且(3)很危险。就个人而言,我认为langauge的语法应该需要大括号,即使它仅用于一个语句。拯救你陷入困境。我认为这就是Perl从内存中做到的。

我还讨厌的是当人们这样做时:

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

那个让我变得笨拙。所以我只发现(2)和(4)可以接受。我不关心它是哪一个,只要它是一致的,最好是在语言的约定范围内。

答案 7 :(得分:2)

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

唯一可以真正回答这个问题的人就是那些打算处理代码的人。重要的是,任何人都同意编码标准。您选择哪种标准并不比每个人都使用它更重要。

答案 8 :(得分: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

答案 9 :(得分:1)

简而言之,没有正确的做法。只要它有效,无论你感觉最好,你都可以使用。您应该选择一个,然后坚持下去,它将使您的代码更容易识别。

唯一的问题是,如果您不包含“{”字符,则仅限于一个表达式或函数。

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

$variable = (CONDITIONAL STATEMENT) ? "It was true" : "It was false"; 

答案 10 :(得分:0)

在我的公司,我们使用:

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

只要有标准

,我就不重要了

答案 11 :(得分:0)

真的对我来说......没关系。我相信你应该能够无任何问题地阅读。大括号是否在新行上是否真的重要?如果在右括号后面有空格,那真的很重要吗?

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

有正确的方法吗?如果有,那么为什么我们有不同的选择?