Skip to content

Posts

Com ou Sem Chaves?

14 de outubro de 2019 • 2 min de leitura

Com ou Sem Chaves?

Há um debate acalorado sobre instruções únicas e se elas devem ter chaves ou não.

Em C++, C#, Java e Javascript uma instrução de uma única linha sem chaves é válida, alguns aproveitam esse recurso, 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 Uma Única Linha

O argumento contra chaves é a sintaxe mais concisa, menos caracteres para digitar e é uma sintaxe válida. Por que não aproveitar isso?

Argumentos A Favor de Chaves em Uma Única Linha

O argumento a favor de chaves é consistência, menos bugs e mais natural para análise mental.

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 instrução if de uma única linha sem chaves. Jon continua dizendo que, embora omitir chaves em instruções de uma única linha seja mais conciso, prevenir defeitos é mais importante do que concisão.

Jon propõe um compromisso, permitir instruções de uma única linha se elas estiverem realmente em uma única linha:

if(ifTrue) MowTheLawn();

Eco os pensamentos de Jon, omitir as chaves em linhas únicas não vale o benefício que oferece. 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 instrução if. O próximo efeito é que o engenheiro economiza alguns toques de teclado e passa o fardo para futuros leitores analisarem seu código.

Para os Engenheiros de Software C#, a Microsoft tomou partido 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 é muito claro. Isso torna o código menos propenso a erros e mais consistente, embora alguns possam argumentar esse ponto, acho mais fácil de ler.

Autor: Chuck Conway é um Engenheiro de IA com quase 30 anos de experiência em engenharia de software. Ele constrói sistemas de IA práticos—pipelines de conteúdo, agentes de infraestrutura e ferramentas que resolvem problemas reais—e compartilha o que está aprendendo ao longo do caminho. Conecte-se com ele nas redes sociais: X (@chuckconway) ou visite-o no YouTube e no SubStack.

↑ Voltar ao topo

Você também pode gostar