Ik heb in het verleden al wel meer met jullie gesproken over programmeerstijlen. Ook over het nu volgende "probleem" waar ik weer even tegenaan wandel. Ik probeer steeds consistenter te worden en dus voor een bepaalde "stijl" te kiezen. Zo werd eerder wel eens de tip gegeven om niet onnodig variabelen aan te maken. Toch ben ik wel nieuwsgierig welke van deze 2 opties jullie zelf zouden kiezen. Let wel, het gaat niet om de inhoud van de code (dat is gewoon ff onzin), maar om het wel of niet gebruiken van extra variabelen.
?>
Nogmaals, het gaat niet om de inhoud van de code. Het gaat erom wat je het meest aanspreekt. Wat zou je zelf kiezen? De versie met of zonder extra variabelen... en waarom?
De vraag moet zijn, Heb ik die variabelen nodig dan maak ik ze aan zoniet dan maak ik deze niet aan. Overigens is php hierin naar mijn mening een beetje lui en een programmeur die in andere meer strikte talen werkt hoeft hier niet eens heel lang over na te denken omdat hetgeen hij als parameter meegeeft meestal vooraf gedefinieerd is. Bijvoorbeeld
in php kan je doen
<?php
$foo = new Person();
$bar->setName($foo->name);
?>
Maar in een meer striktere taal is al voorgedefinieerd wat je moet meegeven. Bijvoorbeeld een object, String, Integer o.i.d. dus daar kan je niet zelf kiezen wat mooier is een extra variabele maken van bijv. een object en dat meegeven of een object gelijk als parameter meegeven.
Kortom, Ik zou als je het nodig acht een variabele aanmaken en als je denkt dat je in een situatie dit niet nodig hebt gelijk meegeven als parameter. ( als ik je vraag goed heb begrepen is dit hoe ik erover denk en anders moet je me even verduidelijken als ik je vraag verkeerd heb begrepen uit je dummy code ) :p
Die initiële variabelen in voorbeeld 1 heb je nadat $foobarbaz is aangemaakt niet meer nodig. Je zou ze dus kunnen weglaten zoals in voorbeeld 2. Maar dan kun je dus dit soort constructies (let weer niet op de code) krijgen:
<?php
Responder::respond(dispatcher::getResponse($this->createServices($this->getRequest())));
?>
In plaats van:
<?php
$request = $this->getRequest();
$services = $this->createServices($request);
$response = dispatcher::getResponse($services);
Responder::response($response);
?>
Het eerste code-voorbeeld bevat aardig wat "nested" code, waardoor het lastiger te lezen is. Het 2e voorbeeld is (vind ik) makkelijker te lezen, maar bevat weer onnodige variabelen. Dat is dus een beetje wat ik me afvraag. Kies je voor leesbaarheid en onnodige variabelen? Of niet?
Zoals ik zei in een strikte taal ben je verplicht om soms een instantie aan te maken van een persoon object bijvoorbeeld om alleen de naam mee te geven in een parameter. Dus veelal zullen programmeurs een extra variabele hiervoor moeten maken en omdat ze hier mee gewend zijn zullen ze dit ook in php doen. Aangezien jij ( volgens mij ) alleen in php werkt heb je er niet veel last van maar is het meer wat jij fijner vind en wat maar net toepasselijk is op dat moment. Stel je hebt het maar 1x nodig dan kan je het eerste voorbeeld gebruiken is niks mis mee. Wil je het object meerdere keren gebruiken of moet je dat meerdere keren gebruiken dan is een variabele sowieso handig.
>> Aangezien jij ( volgens mij ) alleen in php werkt
Correct :)
>> Stel je hebt het maar 1x nodig dan kan je het eerste voorbeeld gebruiken is niks mis mee.
Ik begrijp dat er niks mis mee is. Het is korter en je bespaart variabelen. Dus dat is allemaal positief. Alleen het leest wat lastiger. En ik vroeg me dus af of dat een reden kan zijn om toch extra variabelen te gebruiken. Maar uit jouw reactie leid ik af dat je dat beter niet kan doen.
Ik begrijp dat er niks mis mee is. Het is korter en je bespaart variabelen. Dus dat is allemaal positief. Alleen het leest wat lastiger. En ik vroeg me dus af of dat een reden kan zijn om toch extra variabelen te gebruiken.
Voor beginners doe ik dat, bijvoorbeeld in mijn boeken, precies om die reden inderdaad wel, bijvoorbeeld:
Zou ik hier verder programmeren met $email_address[1], dan zou ik moeten uitleggen dat dit slechts het gedeelte van het e-mailadres is dat de hostnaam bevat. Door echter de dingen bij de naam te noemen, bijvoorbeeld $hostname, voorkom je die extra uitleg en krijg je code die, voor beginners vooral, beter leesbaar is.
Vind deze wel lastig te beantwoorden, aangezien ik daar niet helemaal constant in ben. Over het algemeen gebruik ik optie 2, zo blijft het overzichtelijk en hoef je geen extra variabelen aan te maken.
Maar met andere php functies doe ik het weer niet, zoals bijv. bij optie 3 ipv optie 4.
>> Het zijn maar drie extra verwijzingen naar een waarde die er bij komen. De waardes zelf worden niet gekopieerd.
Hoe bedoel je dat de waardes niet worden gekopieerd? Omdat ze objecten teruggeven bedoel je? Oké... maar dan nog maak je 3 variabelen aan die verder niet worden gebruikt. Beter leesbaar, ja. Efficiënt... dat wat minder. Maar jij vindt dus leesbaarheid belangrijker?
@Gerhard:
Consequent zijn is het lastigste wat er is. Met inspringen maak je het inderdaad leesbaarder, maar inderdaad... code die op 1 regel past (zoals bij jouw optie 3) zou ik zelf ook niet graag op 6 regels zetten. Bij optie 2 wordt het er wel weer duidelijker op. Maar hoe maak je die keuze?