Pergunta

Tem sido um problema de longa duração que eu me deparei em muitos-a-hot-and-cheia de vapor de codificação sessões.

Códigos uma pessoa desta forma mais códigos dessa forma. Então, depois de tanto empurrar e puxar Estou curioso ... Existe alguma maneira correta de fraseado um PHP 'IF ELSE' declaração?

Pessoalmente eu uso o:

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

Depois de muitos argumentos que eu tenha sido apresentado com outras opções, tais como:

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

ou

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

ou

if ($variable == 'setvalue') {
    $variable = executefunctiononvariable($variable);
} else {
    $variable = executedifferentfunctiononvariable($variable);
}
Foi útil?

Solução

Eu, pessoalmente, formatar meu if / else como o último:

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

A sua versão é tipo uma mistura de 1 e 3, em minha mente.

Eu também tenho trabalhado com programadores que fazem todos eles e nunca ouviu falar de um padrão.

O site php usa a última: http: // ca2. php.net/manual/en/control-structures.elseif.php

Eu também uso o segundo exemplo, em alguns casos, quando a instrução if será sempre muito curto. Se há sempre um possibiltiy de ele ficar mais tempo (mais de 1 linha cada) eu vou fazer o # 1. Eu tento evitar # 2 quando possível causa é difícil para adicionar o {} mais tarde.

Outras dicas

Eu uso o último:

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

Dito isto, é muito pouco importante que aquele que você vai com, apenas certifique-se que você está consistente .

O caminho certo é seguir padrão de codificação do seu projeto. Se você não tiver um, adotar um do PHP-FIG, Zend, Symfony, etc.

Esta forma parece muito popular:

if (condition) {
    statements
} else {
    statements
}

Para atribuição de variável Vou usar um ternário única se a declaração pode caber de forma legível em uma linha:

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

Atualizar :. Eu removi a parte sobre um ramal declarações ternários como eu já não consideram esta uma prática sábia

I personnally preferem:

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

Não se esqueça

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

Eu pessoalmente gosto dessa estrutura quando estou cozinhando uma sopa de tag.

A coisa mais importante é que os programadores que trabalham em um projeto muito bonito aderir às mesmas diretrizes de codificação . Então, tem uma reunião e escolher um ou o outro, e depois ficar com ela.

Eu costumava fazer (2) o tempo todo, mas consegui-lo batido fora de mim de programação Java como convenções de codificação da Sun utilizar (4). Então agora eu estou muito utilizado para (4). Eu tenho feito um pouco de C # ultimamente e parece usar (2) por padrão (suspiro, aqui vamos nós de novo).

Em PHP de hábito eu faço (4), mas (2) é muito fina. Eu não gosto (1) em tudo .

E (3) é perigoso. Pessoalmente acho que chaves devem ser obrigados pela sintaxe do langauge mesmo que seja apenas para uma declaração. Poupa se meter em encrencas. Eu acho que é como Perl faz-lo da memória.

O que eu também ódio é quando as pessoas fazem isso:

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

que um conduz-me extravagantemente. Então eu só encontrar (2) e (4) aceitável. Eu não me importo qual é que é, contanto que ele é feito de forma consistente, de preferência dentro das convenções para a linguagem.

Não há nenhuma maneira certa ou errada, é uma opinião. Pessoalmente, eu como o último melhor ( 1TBS ??? ). Eu nunca uso a um sem chaves, considero que é um estilo ruim em geral.

As únicas pessoas que podem realmente responder a essa pergunta para você são as outras pessoas que estão indo para o trabalho no código. É importante que everone concorda com um padrão de codificação. Qual padrão você escolhe é menos importante do que o fato de que todo mundo usa.

O padrão de codificação PEAR é o padrão PHP codificação. Eu recomendaria que se acostumar a ele como você vai encontrá-lo em outros projetos, tais como Zend, Doutrina, Symfony, Horda e muitos, muitos mais.

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

Em suma, o não é correta maneira de fazer. Enquanto ele funciona, o que você sente é o melhor, você pode usar. Você deve escolher um e, em seguida, cumpri-lo, ele vai fazer seu código mais fácil de reconhecer.

A única coisa é, se você não incluir o "{" personagem que você está limitado a uma expressão ou função.

Além disso, se você está olhando apenas para definir variáveis ??que você pode usar o seguinte código:

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

Na minha empresa usamos:

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

Eu realmente não importa levamos como há um padrão

Realmente para mim ... ele simplesmente não importa. Eu acredito que você deve ser capaz de ler de qualquer forma, sem problemas. Será que realmente importa se a chaveta está em uma nova linha ou não? Será que realmente importa se há um espaço após o parêntese de fechamento ou não?

Enquanto o código é feito de tal forma que houve pelo menos uma tentativa de torná-lo legível, eu realmente não me importo.

Existe uma maneira correta? Bem, se havia, então porque é que temos opções de fazê-lo de forma diferente?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top