Webontwikkeling

PHP de juiste manier: if-else-statements

Wellicht één van de meeste gebruikte onderdelen binnen programmeren is de if-else-statement. Hiermee bepaal je de conditie wanneer een bepaalde actie moet worden uitgevoerd door het script. Voor de if-else-statement bestaan meerdere schrijfwijzen, maar wat is eigenlijk de juiste? In dit artikel laat ik verschillende technieken zien en geef ik mijn kijk of dit de juiste manier is of juist niet.

 

if-else-statement

Om af te trappen begin ik met een methode die ik persoonlijk afwijs. Dat is namelijk de if-else-statement zonder accolades.

if ($foo == 1)
    echo 'Hello world';
elseif ($foo == 2)
    echo 'Hello second world';
else 
    echo 'Goodbye world';

Nu vraag je je af waarom is bovenstaande code fout. In mijn opzicht om een tweetal redenen. De eerste is leesbaarheid. Je ziet namelijk niet waar de uitvoerende code begint en eindigt. Door juist gebruik van inspringen word dit nog enig sinds verzacht. De tweede reden is dat er eenvoudig onverwacht gedrag in kan sluipen. Een goed voorbeeld hiervan is de goto-fail van Apple. Een fout die voorkomen had kunnen worden door het juist schrijven van de if-else-statement.

De onderstaande schrijfwijze prefereer ik persoonlijk en adviseer ik vanwege leesbaarheid en het inperken van fouten.

if ($foo == 1) {
    echo 'Hello world';
} 
elseif ($foo == 2) {
    echo 'Hello second world';
}
else {
    echo 'Goodbye world';
}

Templates

Wanneer if-else-statement in HTML-template toepast word, zie ik dat er vaak word gekozen voor de verkeerde techniek, meestal uit onwetendheid. Dat is namelijk de volgende techniek.

<? if ($foo == 1) { ?>
    Hello world
<? } elseif ($foo == 2) { ?>
    Hello second world
<? } else { ?>
    Goodbye world
<? } ?>

Zoals hierbij direct opvalt is dat de leesbaarheid ten wensen overlaat. Tevens zul je merken dat wanneer er meer uitvoerende code in de if-else-statement staat dat je het begin en einde ervan niet meer kan herleiden. Heel belangrijk hierbij is het juist laten inspringen van de code. Verder is er voor templates een aparte syntax bedacht namelijk de if-else-endif-statement.

<? if ($foo == 1): ?>
    Hello world
<? elseif ($foo == 2): ?>
    Hello second world
<? else: ?>
    Goodbye world
<? endif ?>

Door hiervan gebruik te maken verhoog je de leesbaarheid van de code enorm. Door gebruik te maken van endif laat je duidelijk zien wat je laat eindigen in je code.

Verkorte if-else-statement

Tot slot hebben we de verkorte if-else-statement. Deze variant word veelal gebruikt om het script in te korten. Nadeel is wel dat de leesbaarheid van de code achteruit gaat. Gebruik deze variant dan ook alleen voor simpele bewerkingen.

echo ($foo == 1) ? 'Hello world' : 'Goodbye world';

Conclusie

Zoals hierboven te lezen is zijn er verschillende schrijfwijzes. Geen van allen is goed of fout, maar hou wel in gedachten dat consistentie en leesbaarheid heel belangrijk is voor leesbare code.