Skip to content

Innlegg

Med eller uten krøllparenteser?

14. oktober 2019 • 2 min lesing

Med eller uten krøllparenteser?

Det er en heftig debatt rundt enkeltsetninger og om de bør ha krøllparenteser eller ikke.

I C++, C#, Java og Javascript er en enkeltlinje-setning uten krøllparenteser gyldig, noen drar nytte av denne funksjonen, mens andre ikke gjør det.

For eksempel

if(ifTrue) 
  MowTheLawn();

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

foreach(var dollar in money)
  BuyLollipop();

while(untilTheEnd)
  Read();

Argumenter mot enkeltlinje krøllparenteser

Argumentet mot krøllparenteser er at det er mer kortfattet syntaks, det er færre tegn å skrive, og det er gyldig syntaks. Hvorfor ikke dra nytte av det?

Argumenter for enkeltlinje krøllparenteser

Argumentet for krøllparenteser er konsistens, færre feil og mer naturlig å mentalt tolke.

I en artikkel skrevet av Jon Abrams med tittelen Single-line ‘if’ statements, forklarer Jon hvordan en defekt i Apples TLS-implementering ble introdusert som et resultat av en enkeltlinje if-setning uten krøllparenteser. Jon fortsetter med å si at selv om utelatelse av krøllparenteser i enkeltlinje-setninger er mer kortfattet, er det viktigere å forhindre defekter enn å være kortfattet.

Jon foreslår et kompromiss, å tillate enkeltlinje-setninger hvis de virkelig er på en enkelt linje:

if(ifTrue) MowTheLawn();

Jeg deler Jons tanker, å utelate krøllparentesene i enkeltlinjer er ikke verdt fordelen det tilbyr. Det tvinger programvareutvikleren til å vurdere to varianter av gyldig syntaks. Det virker kanskje ikke så ille, men det er slitsomt å ta denne avgjørelsen hver gang du støter på en if-setning. Den neste effekten er at utvikleren sparer noen få tastetrykk og overfører byrden til fremtidige lesere for å tolke koden deres.

For C# programvareutviklere har Microsoft tatt et standpunkt i sine kodingskonvensjoner, som krever krøllparenteser.

Når vi bruker krøllparenteser i alle tilfeller uavhengig av antall linjer, er det som er i omfang og det som er utenfor omfang veldig tydelig. Dette gjør koden mindre feilutsatt og mer konsistent, selv om noen kanskje vil argumentere mot dette punktet, finner jeg det lettere å lese.

Forfatter: Chuck Conway spesialiserer seg på programvareutvikling og Generativ AI. Koble til ham på sosiale medier: X (@chuckconway) eller besøk ham på YouTube.

↑ Tilbake til toppen

Du liker kanskje også