Skip to content

Publicaciones

¿Con o sin llaves?

14 de octubre de 2019 • 2 min de lectura

¿Con o sin llaves?

Existe un debate acalorado sobre las declaraciones únicas y si deberían tener llaves o no.

En C++, C#, Java y Javascript, una declaración de una sola línea sin llaves es válida. Algunos aprovechan esta característica, mientras que otros no.

Por ejemplo

if(ifTrue) 
  MowTheLawn();

for(var index; index > 10; index++)
  ChopWood();

foreach(var dollar in money)
  BuyLollipop();

while(untilTheEnd)
  Read();

Argumentos en contra de las llaves en una sola línea

El argumento en contra de las llaves es que la sintaxis es más concisa, hay menos caracteres que escribir y es una sintaxis válida. ¿Por qué no aprovechar esta característica?

Argumentos a favor de las llaves en una sola línea

El argumento a favor de las llaves es la consistencia, menos errores y es más natural de procesar mentalmente.

En un artículo escrito por Jon Abrams titulado Single-line ‘if’ statements, Jon explica cómo se introdujo un defecto en la implementación de TLS de Apple como resultado de una declaración if de una sola línea sin llaves. Jon continúa diciendo que aunque omitir llaves en declaraciones de una sola línea es más conciso, prevenir defectos es más importante que la concisión.

Jon propone un compromiso: permitir declaraciones de una sola línea si realmente están en una sola línea:

if(ifTrue) MowTheLawn();

Comparto los pensamientos de Jon. Omitir las llaves en líneas únicas no vale la pena por el beneficio que ofrece. Obliga al ingeniero de software a considerar dos variaciones de sintaxis válida. Puede que no parezca tan malo, pero es agotador tomar esta determinación cada vez que te encuentras con una declaración if. El siguiente efecto es que el ingeniero ahorra algunos pulsaciones de teclas y transfiere la carga a los lectores futuros para que analicen su código.

Para los ingenieros de software de C#, Microsoft ha tomado partido en sus convenciones de codificación, que requieren llaves.

Cuando usamos llaves en todos los casos, independientemente del número de líneas, es muy claro qué está en el alcance y qué está fuera del alcance. Esto hace que el código sea menos propenso a errores y más consistente. Aunque algunos podrían argumentar este punto, me resulta más fácil de leer.

Autor: Chuck Conway es un Ingeniero de IA con casi 30 años de experiencia en ingeniería de software. Construye sistemas de IA prácticos—canalizaciones de contenido, agentes de infraestructura y herramientas que resuelven problemas reales—y comparte lo que está aprendiendo en el camino. Conéctate con él en redes sociales: X (@chuckconway) o visítalo en YouTube y en SubStack.

↑ Volver arriba

También te puede interesar