JavaRush /Blogue Java /Random-PT /Condições Yoda
MAX
Nível 16
Киров

Condições Yoda

Publicado no grupo Random-PT
Um pequeno post é dedicado a todos os fãs de Star Wars e Java/JavaRush em homenagem ao 40º aniversário do lançamento do Episódio V da saga estelar! Condições Yoda - 1Às vezes você pode encontrar muitas coisas interessantes na Internet, e outro dia me deparei com uma prática de programação bastante engraçada, à primeira vista, chamada condições Yoda . Resumindo, as condições Yoda (também notação Yoda) são um estilo de programação no qual as duas partes da expressão de comparação familiar em declarações condicionais são invertidas:
if (5 == a) {
    // do something
}
Este estilo pode ser usado em linguagens com sintaxe semelhante a C, mais frequentemente em expressões com ife while.
if (0 == variable) {
    // do something
}

while (false == endingCondition) {
    // do something
}
Por que mudar a expressão constante para o lado esquerdo do operador de comparação? Vamos supor uma situação hipotética em que, após uma maratona de visualização de todas as nove seis partes da Saga, nós, sem dormir, nos sentamos para escrever algum código para nosso projeto favorito e escrevemos o seguinte:
void checkNumber(int a)
{
    if (a = 13) // Здесь-то и появляется так называемый unexpected behavior!
    {
        printf("Number is 13");
    }
}
Neste caso, toda vez que você executar o programa, você receberá a string Number is 13", independente do argumento passado аpara o método checkNumber(int a). Isto não é o que esperávamos! Erros lógicos podem ocorrer com bastante frequência entre programadores novatos (acredite, eu SEI). Mas na fase de compilação, um código como 13 = a produzirá um erro, que certamente não iremos ignorar, uma vez que o valor inteiro é uma constante e, portanto, não pode mudar (transformar-se em “a”). Condições Yoda - 1

Existem prós e contras em usar as condições do Yoda.

Lado claro:

  1. Impedir a atribuição a uma variável quando nosso objetivo é comparação.

  2. Resolvendo o problema do "comportamento nulo" inseguro ( NullPointerException) // exemplos da Wikipedia

  3. Sem Yoda:

    String myString = null;
    if (myString.equals("foobar")) { /* ... */ }
    // This causes a NullPointerException in Java

    Com Yoda:

    String myString = null;
    if ( "foobar".equals(myString) ) { // Результат - Ложь
       /* не выполняется */
    }

Lado escuro:

  1. A legibilidade do código para quem irá olhar seu código torna-se mais complexa, aumentando a carga na percepção do código.
  2. Escopo estreito, apenas a comparação para igualdade ou comparação com uma constante é usada, verificando se há nulo.
  3. Muitos compiladores já “vêem” erros desse tipo e avisam antecipadamente sobre a presença de um erro potencial.
Uma alternativa à notação Yoda podem ser os testes unitários. Na época da República Velha, dizia-se que realizar bons testes garantiria que o código estaria livre de erros e faria apenas o que foi escrito para fazer. Que práticas úteis você conhece? Compartilhe seu conhecimento nos comentários! E também escreva seu episódio favorito! E que a Força esteja com você!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION