if
Condições de enrolamento longas devem ser evitadas, se possível, mas às vezes acabamos escrevendo-as. Mesmo que seja uma condição muito simples, as declarações envolvidas às vezes são simplesmente muito prolixo, portanto toda a condição acaba sendo muito longa. Qual é a maneira mais legível de formatar esses?
if (FoobarBaz::quxQuux(corge, grault) || !garply(waldo) || fred(plugh) !== xyzzy) {
thud();
}
ou
if (
FoobarBaz::quxQuux(corge, grault)
|| !garply(waldo)
|| fred(plugh) !== xyzzy
) {
thud();
}
ou
if (FoobarBaz::quxQuux(corge, grault)
|| !garply(waldo)
|| fred(plugh) !== xyzzy) {
thud();
}
ou
thudable = FoobarBaz::quxQuux(corge, grault);
thudable ||= !garply(waldo);
thudable ||= fred(plugh) !== xyzzy;
if (thudable) {
thud();
}
ou outras preferências?
coding-style
conditions
deceze
fonte
fonte
Eu gosto de manter os operadores no final para indicar a continuação:
fonte
Sou um grande fã de nomes de variáveis significativos:
Ou refatorar como uma função, como mencionado acima.
fonte
Divido as subexpressões mais confusas, ou todas elas, como variáveis booleanas. Em seguida, a lógica booleana de nível superior da instrução 'if' pode ser esclarecida. No tipo de trabalho que faço, nem sempre há várias coisas ORed ou ANDed.
Isso é especialmente bom em um depurador, onde eu posso ver todos os bools antes de executar o 'if'.
fonte
Tendo a alinhar os operadores no início de novas linhas, lembro-me de como estou combinando termos (tanto para lógica longa quanto para aritmética longa). Como isso:
Isso só funciona se eu recuar por 2 espaços ou definir meu ambiente para recuar mais predicados de várias linhas, ou então seria difícil dizer onde o predicado termina e o código útil começa.
fonte
Sou fã do seguinte:
Dessa forma, ainda parece uma expressão if e não uma expressão if quebrada em pedaços. O recuo ajuda a mostrar que é uma continuação da linha anterior.
Você também pode recuá-lo até que o colchete de abertura esteja no final da linha anterior, para que fique no final da expressão if como deveria estar.
fonte