
Há um debate acalorado sobre declarações únicas e se elas devem ter chaves ou não.
Em C++, C#, Java e Javascript uma declaração de linha única sem chaves é válida, alguns aproveitam essa funcionalidade, enquanto outros não.
Por Exemplo
if(ifTrue)
MowTheLawn();
for(var index; index > 10; index++)
ChopWood();
foreach(var dollar in money)
BuyLollipop();
while(untilTheEnd)
Read();
Argumentos Contra Chaves em Linha Única
O argumento contra chaves é que é uma sintaxe mais concisa, são menos caracteres para digitar, e é uma sintaxe válida. Por que não aproveitar isso?
Argumentos a Favor de Chaves em Linha Única
O argumento a favor de chaves é consistência, menos bugs e mais natural para analisar mentalmente.
Em um artigo escrito por Jon Abrams intitulado Single-line ‘if’ statements, Jon explica como um defeito na implementação TLS da Apple foi introduzido como resultado de uma declaração if de linha única sem chaves. Jon continua dizendo que embora omitir chaves em declarações de linha única seja mais conciso, prevenir defeitos é mais importante que concisão.
Jon propõe um compromisso, permitir declarações de linha única se elas estiverem verdadeiramente em uma única linha:
if(ifTrue) MowTheLawn();
Eu concordo com os pensamentos do Jon, omitir as chaves em linhas únicas não vale o benefício que oferece. Isso força o engenheiro de software a considerar duas variações de sintaxe válida. Pode não parecer tão ruim, mas é cansativo fazer essa determinação cada vez que você se depara com uma declaração if. O efeito seguinte é que o engenheiro economiza algumas teclas e passa o fardo para futuros leitores analisarem seu código.
Para os Engenheiros de Software C#, a Microsoft tomou uma posição em suas convenções de codificação, que exigem chaves.
Quando usamos chaves em todos os casos, independentemente do número de linhas, o que está no escopo e o que está fora do escopo fica muito claro. Isso torna o código menos propenso a erros e mais consistente, embora alguns possam argumentar esse ponto, eu acho mais fácil de ler.
Autor: Chuck Conway é especialista em engenharia de software e IA Generativa. Conecte-se com ele nas redes sociais: X (@chuckconway) ou visite-o no YouTube.