
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.