Generieke Functies
We hebben al geoefend met functies, maar we gaan nog een keer theoretisch kijken naar functies; wanneer gebruik je functies, wat zij de voordelen en waaraan voldoet een goede functie?
We hebben het her over functies, maar alles wat voor functies geldt ook voor methods in een class.
Wat is een (goede) functies
Een functie is een stukje code dat hergebruikt kan worden. Dat betekent dat functies generiek zijn. Dat betekent dat een goede functies een toepassing heeft die algemeen toepasbaar is.
Van een functie is het heel belangrijk wat de input en de output is. Als je de input (parameters) en de output (return value) goed beschrijft, dan hoef je niet weten hoe de functie werkt om hem te kunnen gebruiken.
Bijvoorbeeld, laten we eens kijken naar de (ingebouwde) PHP-functie rand().
rand ( int $min , int $max ) : int
Parameters
$min: De minimale waarde
$max: De maximale waarde
Return Values
Een willekeurig getal tussen min en max.
(bron: https://www.php.net/manual/en/function.rand.php)
Zoals je kan zien geef je twee waardes mee, beide een integer. De eerste integer bepaald de minimale waarde, de tweede de maximale. En de return value is een willekeurig getal (ook int) tussen de min en max waarde.
Deze functie is generiek want die kan voor heel veel doeleinden worden gebruikt. Met de parameters kun je als het ware het gedrag van de functie sturen en bepaal je wat de functie doet. Wil je een dobbelsteen simuleren, of wil je een getal tussen 0 en 100, of wil je kop/munt spelen, dat kan allemaal met deze functie.
Een voorbeeld van een minder generieke functie zou zijn:
rand () : int
Parameters
Geen
Return Values
Een willekeurig getal tussen 1 en 10.
Om met deze functie een dobbelsteen te simuleren wordt een stuk lastiger.
Een voorbeeld van een nog minder generieke functie zou zijn:
rand ()
Parameters
Geen
Return Values
Geen
De functie print een getal tussen 0 en 10
In dit voorbeeld is er geen parameter en geen return value. De functie print (echo) een getal tussen 0 en 10 want je kunt bijvoorbeeld niet meer rekenen met de uitkomst van deze functie.
Hoe maken we functies generiek?
Daar zijn geen kei-harde regels voor, maar er is wel een aantal zaken waar je aan kan denken:
1. Is de output (return value) van een functie altijd hetzelfde?
Als dat zo is, dan is de functie waarschijnlijk niet heel erg generiek.
2. Zit er een echo/print in een functie?
Met een echo ligt het formaat van de output vast, bijvoorbeeld de taal. Ook kun je met het resultaat niet meer verder rekenen. Een echo kan er dus ook voor zorgen dat een functie minder generiek wordt.
3. Is de output afhankelijk van de input?
Bepaal je met de input van de functie de output? Stuur je als het ware wat de functie doet met input? Als dat zo is dan maakt dat de functie meer generiek.
Voorbeelden
Met deze functie 'gooien' we met twee dobbelstenen.
<?php
function Dobbel() {
$steen1 = rand(1,6);
$steen2 = rand(1,6);
echo $steen1 + $steen2;
}
Kijken we naar de 3 richtlijnen dan zien we dat er een echo in de functie zit. We kunnen de functie dus generieker maken.