return
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:
Code (php)
of dit:
Code (php)
Gewijzigd op 15/08/2012 08:41:38 door Ozzie PHP
En in sommige meer uitgebreidere statements gebruik ik een switch om zo aan de hand van ee returnwaarde de juiste melding/tekst weer te geven.
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?
Code (php)
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.
Zomaar een verzinsel:
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' ;-)
Code (php)
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.
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.
Als iemand nog iets wil toevoegen hoor ik het wel...
@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.
In Delphi doe je het precies andersom:
Code (php)
Je moet daar dus ook vooraf bepalen wat je terug gaat geven, als je in het voorbeeld van result een string zou maken krijg je een heerlijke foutmelding.
en niet zo?
Precies, je kan daar niet een default waarde aan het einde geven, maar inderdaad wel aan het begin. Op zich dus dezelfde methode. In elk geval scheelt het je voor elke uitzondering een aparte waarde ergens aan toe te moeten kennen. En daarbij kan je inderdaad niet zomaar iets geven, het type is al bepaald. Zoals overigens voor alle variabelen geldt in Delphi.
Ozzie, mijn voorkeur gaat ook uit naar de methode van SanThe.
Ozzie PHP op 15/08/2012 11:29:51:
In dit voorbeeld zou ik de else weghalen:
Gewijzigd op 15/08/2012 12:28:58 door - SanThe -
SanThe, waarom zou je de else weghalen?
Ozzie PHP op 15/08/2012 12:39:45:
SanThe, waarom zou je de else weghalen?
Die is nutteloos.
Sinds dit jaar volg ik ook hoger onderwijs, en daar verplicht men zelfs om de return op het einde te plaatsen. Wellicht om dezelfde reden: leesbaarheid.
- SanThe - op 15/08/2012 12:42:17:
Die is nutteloos.
Ozzie PHP op 15/08/2012 12:39:45:
SanThe, waarom zou je de else weghalen?
Die is nutteloos.
Maar het is toch een if else? Als niet dit... dan dat?
(Ik zie het wel vaker overigens hoor, maar vraag me af wat het nut precies is.)
- SanThe - op 15/08/2012 12:28:24:
En dat is precies wat ik dus eerder al had.....
Ozzie, je kan de else weglaten, omdat als je de if in gaat, de executie er nooit meer uit zal komen. De return verhindert dat. Dat is wat ik bedoelde met het punt dat je de 'default' return aan het einde kan zetten. Is er geen eerdere return geweest, dan heb je de default nodig.
Gewijzigd op 15/08/2012 12:56:44 door Erwin H