Det er en heftig debatt om enkeltsetninger og hvorvidt de skal ha krøllparenteser eller ikke.
I C++, C#, Java og Javascript er en enkeltlinjesetning uten krøllparenteser gyldig, noen utnytter 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 enkeltlinjes krøllparenteser
Argumentet mot krøllparenteser er at det er mer kortfattet syntaks, færre tegn å skrive, og det er gyldig syntaks. Hvorfor ikke utnytte det?
Argumenter for enkeltlinjes krøllparenteser
Argumentet for krøllparenteser er konsistens, færre feil og mer naturlig å tolke mentalt.
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 enkeltlinjes if-setning uten krøllparenteser. Jon fortsetter med å si at selv om det å utelate krøllparenteser i enkeltlinjesetninger er mer kortfattet, er det å forhindre defekter viktigere enn kortfattethet.
Jon foreslår et kompromiss, å tillate enkeltlinjesetninger hvis de virkelig er på en enkelt linje:
if(ifTrue) MowTheLawn();
Jeg er enig med Jons tanker, det er ikke verdt å utelate krøllparenteser i enkeltlinjer for fordelen det gir. Det tvinger programvareingeniøren til å vurdere to variasjoner av gyldig syntaks. Det virker kanskje ikke så dårlig, men det er slitsomt å ta denne avgjørelsen hver gang du kommer over en if-setning. Neste effekt er at ingeniøren sparer noen tastetrykk og overfører byrden til fremtidige lesere for å tolke koden deres.
For C#-programvareingeniører har Microsoft tatt side i deres kodingskonvensjoner, som krever krøllparenteser.
Når vi bruker krøllparenteser i alle tilfeller uavhengig av antall linjer, er det veldig klart hva som er innenfor omfang og hva som er utenfor omfang. Dette gjør koden mindre feilprosent og mer konsistent, selv om noen kan argumentere for dette punktet, finner jeg det lettere å lese.
Forfatter: Chuck Conway er en AI-ingeniør med nesten 30 års erfaring innen programvareutvikling. Han bygger praktiske AI-systemer—innholdspipelines, infrastrukturagenter og verktøy som løser virkelige problemer—og deler det han lærer underveis. Koble til ham på sosiale medier: X (@chuckconway) eller besøk ham på YouTube og på SubStack.