Tecnicamente não, mas de outra forma absolutamente Sim !!!
Esqueça "É uma preferência pessoal", "o código funcionará bem", "está funcionando bem para mim", "é mais legível" yada yada BS. Isso pode facilmente levar a problemas muito sérios se você cometer um erro e, acredite, é muito fácil cometer um erro durante a codificação (não acredite?), Confira a famosa Apple falha ).
Argumento: "É preferência pessoal"
Não não é. A menos que você seja uma equipe de um homem saindo em Marte, não. Na maioria das vezes, haverá outras pessoas lendo / modificando seu código. Em qualquer equipe séria de codificação, essa será a maneira recomendada, portanto não é uma 'preferência pessoal'.
Argumento: "o código funcionará perfeitamente"
O mesmo acontece com o código do espaguete! Isso significa que está tudo bem em criá-lo?
Argumento: "tem funcionado bem para mim"
Na minha carreira, vi muitos bugs criados por causa desse problema. Você provavelmente não se lembra de quantas vezes comentou 'DoSomething()'
e ficou perplexo com o motivo 'SomethingElse()'
:
if (condition)
DoSomething();
SomethingElse();
Ou acrescentou 'SomethingMore' e não percebeu que não será chamado (mesmo que o recuo implique o contrário):
if (condition)
DoSomething();
SomethingMore();
Aqui está um exemplo da vida real que eu tive. Alguém queria desativar todos os logs para executar find & replace "console.log"
=> //"console.log"
:
if (condition)
console.log("something");
SomethingElse();
Vê o problema?
Mesmo se você pensar, "estes são tão triviais, eu nunca faria isso"; lembre-se de que sempre haverá um membro da equipe com habilidades de programação inferiores a você (espero que você não seja o pior da equipe!)
Argumento: "é mais legível"
Se eu aprendi alguma coisa sobre programação, é que as coisas simples se tornam muito complexas muito rapidamente. É muito comum que isso:
if (condition)
DoSomething();
se transforma no seguinte após ter sido testado com diferentes navegadores / ambientes / casos de uso ou novos recursos adicionados:
if (a != null)
if (condition)
DoSomething();
else
DoSomethingElse();
DoSomethingMore();
else
if (b == null)
alert("error b");
else
alert("error a");
E compare com isso:
if (a != null) {
if (condition) {
DoSomething();
}
else {
DoSomethingElse();
DoSomethingMore();
}
} else if (b == null) {
alert("error b");
} else {
alert("error a");
}
PS: Os pontos de bônus são para quem notou o erro no exemplo acima.