vergelijken en returnen
Nog weer even een leuke...
Stel we hebben een of andere (algemene) copy functie. Als deze false teruggeeft (het kopiëren is mislukt) wil ik een exception gooien. Weer even uit nieuwsgierigheid. Heeft voorbeeld A of voorbeeld B jullie voorkeur?
A:
Code (php)
B:
Code (php)
In voorbeeld A zeg ik "als het kopiëren is mislukt gooi dan een exception. In voorbeeld B zeg ik "als het kopiëren is GELUKT verlaat dan de functie. Als het kopiëren dan mislukt dan wordt er niet gereturned en wordt alsnog de exception gegooid. Twee verschillende benaderingswijzen. Methode A voelt denk ik het meest intuïtief en prettig, maar methode B is weer ietsje sneller. Ik weet dat veel mensen voor methode A zouden kiezen, maar ik ben benieuwd of hier ook programmeurs zijn die juist vaker een oplossing a la methode B gebruiken. Van de 2 is methode B dus ietsje sneller (omdat er een positieve vergelijking plaatsvindt in plaats van een negatieve vergelijking zoals bij A). Wat heeft jullie voorkeur?
Gewijzigd op 03/01/2014 23:48:12 door Ozzie PHP
Maar stel dat de throw niet afhankelijk is van die if, maar van andere dingen optie B.
A:
Code (php)
B:
Code (php)
Wat heeft jouw voorkeur?
Ozzie, waarom wil je dat allemaal weten? Beide functies doen toch hetzelfde?
Precies, beiden doen hetzelfde. Maar ik ben dus benieuwd welke variant jullie meestal gebruiken. Ik gebruik wel eens de variant met return (optie B). Ik deed dat omdat dat iets sneller is. Maar ik denk dat optie A beter leesbaar is, en ik neig steeds meer naar het schrijven van leesbare code dan naar code die een ietsje pietsie sneller is. Maar ik ben dus benieuwd hoe anderen daar mee omgaan. Vandaar mijn vraag! :)
Er is geen wetboek, wil je A gebruiken dan gebruik jij lekker A
Gewijzigd op 04/01/2014 01:54:31 door Wouter J
En wat gebruik jij zelf meestal dan?
Ozzie PHP op 04/01/2014 02:08:18:
Allright ;)
En wat gebruik jij zelf meestal dan?
En wat gebruik jij zelf meestal dan?
A, het is leesbaarder.
Eigenlijk is de conclusie dus dat het beter is om leesbaardere code te schrijven in plaats van code die net een ietsiepietsje sneller is, maar minder goed leesbaar. Juiste conclusie?
Tenzij je voor een micro processor aan het programmeren bent zal dat inderdaad het advies zijn.
Dos Moonen op 04/01/2014 17:17:49:
Of tenzij je een andere goede reden hebt, zoals bij Yoda-condities: “If false you are ...”Tenzij je voor een micro processor aan het programmeren bent zal dat inderdaad het advies zijn.
Oké :)
>> Of tenzij je een andere goede reden hebt, zoals bij Yoda-condities: “If false you are ...”
Wat zijn dat Yoda condities?
Nog even een andere vraag. Als je het dan hebt over duidelijk programmeren. Kies je voor optie A of B?
A:
Code (php)
B:
Code (php)
In voorbeeld A ga je er vanuit dat als het geen directory is het automatisch een file is. In voorbeeld B doe je een overbodige controle of het een file is. Echter, je ziet dan wel sneller dat het om een file gaat. Kieze jullie voor A of B?
Gewijzigd op 04/01/2014 17:45:56 door Ozzie PHP
Ken jij een site die google heet? php yoda conditions -> eerste resultaat http://en.wikipedia.org/wiki/Yoda_conditions
Ward, ik zou niet weten wat Yoda conditions hier mee te maken hebben?
>> Kies je voor optie A of B?
B, maar niet omdat ik duidelijk wil programmeren. Gewoon omdat $path ook geen dir en geen file kan zijn.
"ietsie pietsie sneller" => Ben je nu geneigd om lelijkere code te schrijven om gewoon wat meer snelheid te hebben?
Wouter J op 04/01/2014 18:54:24:
>> Wat zijn dat Yoda condities?
Ken jij een site die google heet? php yoda conditions -> eerste resultaat http://en.wikipedia.org/wiki/Yoda_conditions
Ward, ik zou niet weten wat Yoda conditions hier mee te maken hebben?
Ken jij een site die google heet? php yoda conditions -> eerste resultaat http://en.wikipedia.org/wiki/Yoda_conditions
Ward, ik zou niet weten wat Yoda conditions hier mee te maken hebben?
The answer, my friend, is in your answer.
Dangerous and disturbing this puzzle is.
Only a Jedi could have erased those files.
But who, and why, harder to answer.
Meditate on this I will.
>> B, maar niet omdat ik duidelijk wil programmeren. Gewoon omdat $path ook geen dir en geen file kan zijn.
Oké, maar wat nu als zeker is dat $path een path is? Voor welke optie kies je dan?
@Raoul:
>> "ietsie pietsie sneller" => Ben je nu geneigd om lelijkere code te schrijven om gewoon wat meer snelheid te hebben?
Dat is wat ik zeg. Dat doe ik dus vaak wel. Ik laat dan snelheid zwaarder wegen dan duidelijke code. Daar gaat de hele vraag juist over. En mijn vraag aan jou is dus wat jij zwaarder laat wegen?
Je hebt dus duidelijk nog niks geleerd van al je "wat is sneller" topics.
OOP en lelijke geoptimaliseerde code gaan niet samen, dan doe je best alles gewoon procedureel.
Gewijzigd op 04/01/2014 20:39:14 door - Raoul -
Geen domme dingen zeggen Raoul. Dat ben ik van jou niet gewend.
Ik heb er zeker wel iets van geleerd, de vraag is alleen waar je je focus op legt en waar je de voorkeur aan geeft.
Hoe kun je nou zonder controleren zeker weten dat $path een path is? Juist, dat kun je niet zeker weten. De method weet niet in welke omstandigheden hij gebruikt wordt, dus hij weet ook niet zeker of $path een path is.
Wouter, stel ik wil de inhoud van een directory kopiëren naar een andere directory. Dan kan ik toch alle paden in een directory uitlezen? En dan per pad bekijken of het om een file of een directory gaat? In zo'n situatie weet je dan toch al dat $path een path is?
Ozzie PHP op 04/01/2014 21:04:15:
Wouter, stel ik wil de inhoud van een directory kopiëren naar een andere directory. Dan kan ik toch alle paden in een directory uitlezen? En dan per pad bekijken of het om een file of een directory gaat? In zo'n situatie weet je dan toch al dat $path een path is?
Ik stel de vraag nog even opnieuw:
Ozzie PHP op 04/01/2014 17:45:07:
Nog even een andere vraag. Als je het dan hebt over duidelijk programmeren. Kies je voor optie A of B?
A:
B:
In voorbeeld A ga je er vanuit dat als het geen directory is het automatisch een file is. In voorbeeld B doe je een overbodige controle of het een file is. Echter, je ziet dan wel sneller dat het om een file gaat. Kieze jullie voor A of B?
A:
Code (php)
B:
Code (php)
In voorbeeld A ga je er vanuit dat als het geen directory is het automatisch een file is. In voorbeeld B doe je een overbodige controle of het een file is. Echter, je ziet dan wel sneller dat het om een file gaat. Kieze jullie voor A of B?
Graag jullie reactie.