Door
Ozzie PHP
op 15-08-2012 08:40
gewijzigd op 15-08-2012 08:41
3.428 views
Beste,
Wat vinden jullie mooier / hoe doen jullie dit?
Stel je wil een waarde returnen. Als het goed gaat dan wordt de waarde gereturned en als het fout gaat dan wordt false gereturned. Nu vraag ik me af wat mooier is. Zowel in het "if" en het "else" gedeelte een return zetten? Of de waarde toekennen aan een variabele en eenmaal die variabele returnen buiten het if/else statement?
Om het wat duidelijker te maken... zou jij dit doen:
<?php
// hier hebben we dus 2x een return
if (true) {
return 'mijn_waarde';
} else {
return false;
}
?>
of dit:
<?php
// hier hebben we 1x een return
if (true) {
$waarde = 'mijn_waarde';
} else {
$waarde = false;
}
return $waarde;
?>
Als de functie vrij simpel is direct een return. Maar ik heb regelmatig dat de return langzaam wordt gevuld als het goed gaat, dan gebruik ik een variabele.
Maar is het een meer "gebruikelijk" dan het andere? Is het bijvoorbeeld gebruikelijker om per functie maar 1 return te hebben? Of maakt het niet uit als je meerdere returns hebt?
Als je je bedenkt dat er altijd maar 1 return kan plaatsvinden kan je altijd een default return aan het einde geven. Immers, komt het script daar, dan is er blijkbaar geen return mogelijk geweest en dus is de enige mogelijke return op dat punt dus false:
<?php
function getSomething( $value ){
if ( $value > 0 ){
return 'iets';
}
return false;
}
?>
Op deze manier kan je vanalles doen in je script, zonder voor alle mogelijke uitzonderingen apart false te moeten returnen. Als er iets niet klopt, wat dan ook, wordt er altijd false geretourneerd.
Santhe, tuurlijk zijn er op alle standaarden uitzonderingen te verzinnen waarvoor de regel niet meer op gaat. Daarom ook de uitspraak 'uitzonderingen bevestigen de regel' ;-)
Maar de vraag is dus nog steeds of het netjes / duidelijk / overzichtelijk / wenselijk is om meerdere returns in 1 functie te hebben. Ik meen ooit eens gehoord te hebben dat het het mooiste is om maar 1 return per functie te hebben, maar ik vraag me af of dat zijn persoonlijke mening was of dat dat een soort van "stelregel" is.
Volgens mij komt dat dan van iemand met een achtergrond in een andere taal. In bijvoorbeeld Delphi heb je geen return zoals in php, maar geef je de return waarde aan een variabele (met de naam result als ik me niet vergis) en de waarde van die variabele wordt getourneerd. Nadat je daar een waarde aan hebt gegeven gaat de executie echter gewoon door. De methode die ik boven gaf zou daar dus niet werken, want dan krijg je altijd false.
In php ken ik echter niet zo'n stelregel en ik zou geen reden weten waarom je geen twee returns in een functie zou moeten willen hebben.
@Ozzie: Ik ga voor mijn voorbeeld en niet voor die van jou. Ik ben van mening dat, indien iets niet voldoet, er direct een return mag worden gegeven. En ook vind ik mijn methode duidelijker/overzichtelijker.