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.

Optie 1:

<?php

$foo = FooCreator::create();
$bar = BarCreator::create();
$buz = BuzCreator::create();
$baz = BazCreator::create($buz);
$foobar = FooBarCreator::create($foo, $bar);
$foobarbaz = FooBarBazCreator::create($foobar, $baz);

?>
Optie 2:

<?php

$foobarbaz = FooBarBazCreator::create(
FooBarCreator::create(FooCreator::create(), BarCreator::create()),
BazCreator::create(BuzCreator::create())
);

?>
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?
@Wouter: ja, dat topic herinner ik me. Daar refereer ik ook aan in m'n eerste post. Verder niet relevant voor de discussie.
>> Verder niet relevant voor de discussie.

Erg relevant, aangezien het bij beide over hetzelfde gaat: Wel of niet chainen van functie aanroepen?

In ieder geval zal mijn antwoord precies hetzelfde zijn als in dat topic...

Ten slotte, je kan ook consistent in the inconsistent zijn. Consistent betekend niet perse dat je het *altijd* op 1 manier mag doen, zolang je consistent bent in het gebruik van 2 manieren is dat ook consistentie.
@Dos:

>> Wat kost RAM tegenwoordig? Een stuk minder dan een programmeur die uren bezig is om onleesbare code te doorgronden.

Daar heb je ook een punt. Is het echter niet "fout" of een verkeerd programmeer-principe om variabelen aan te maken die je enkel gebruikt om ergens aan door te geven om een betere leesbaarheid te bewerkstelligen? Dit klinkt voor jou misschien als een rare vraag... maar ik heb geen programmeer-achtergrond en ik weet dus ook niet hoe dat zit. Ik heb hier op het forum ook wel horen zeggen dat je geen "extra" variabelen moet aanmaken als dat niet nodig is, maar dat je alles direct moet doorgeven.

>> http://oswaldatwork.thetaoofamp.com/2009/09/how-php-handles-variable-data

In feite zijn het dus "pointers". Dat zal inderdaad niet veel geheugen in beslag nemen... maar dan kom ik dus weer terug op mijn bovenstaande vraag (die ik zelf niet kan beantwoorden) of het niet een verkeerd programmeer-principe is.

@Wouter:

>> Ten slotte, je kan ook consistent in the inconsistent zijn. Consistent betekend niet perse dat je het *altijd* op 1 manier mag doen, zolang je consistent bent in het gebruik van 2 manieren is dat ook consistentie.

Hmmm, zo heb ik er nog niet over nagedacht. En hoe zou je dan moeten kiezen welke manier je gebruikt? Welke criteria zou je bijvoorbeeld kunnen hanteren om een keuze te maken tussen deze opties?

<?php
Responder::respond(dispatcher::getResponse($this->createServices($this->getRequest())));
?>
of

<?php
$request = $this->getRequest();
$services = $this->createServices($request);
$response = dispatcher::getResponse($services);
Responder::response($response);
?>
Hoe kan ik een keuze maken, gebaseerd op vaststaande criteria, die altijd tot hetzelfde resultaat leidt?
Bijv. lijnlengte (bijv. soft limit op 80 characters)
>> Bijv. lijnlengte (bijv. soft limit op 80 characters)

Oké... en zou jij dan als die limiet wordt overschreden extra variabelen gaan aanmaken:

<?php

$foo = FooCreator::create();
$bar = BarCreator::create();
$buz = BuzCreator::create();
$baz = BazCreator::create($buz);
$foobar = FooBarCreator::create($foo, $bar);
$foobarbaz = FooBarBazCreator::create($foobar, $baz);

?>
Of ga je het duidelijker "uitschrijven"?

<?php

$foobarbaz = FooBarBazCreator::create(
FooBarCreator::create(FooCreator::create(), BarCreator::create()),
BazCreator::create(BuzCreator::create())
);

?>
Is het echter niet "fout" of een verkeerd programmeer-principe om variabelen aan te maken die je enkel gebruikt om ergens aan door te geven om een betere leesbaarheid te bewerkstelligen?

Als je in C programmeerd voor een microprocessor die maar een beperkt aantal KiB's beschikbaar heeft? Soms. Hangt van de requirements af.
The ATmega2560 has 256 KB of flash memory for storing code (of which 8 KB is used for the bootloader), 8 KB of SRAM and 4 KB of EEPROM (which can be read and written with the EEPROM library).


Wanneer je in PHP programmeerd dat op een server draait met meerdere GiB's aan RAM? Nee.
Variabelen aanmaken is erg goedkoop. Als je ooit op een punt komt dat alles zo goed geoptimaliseerd is dat het aantal variabelen een bottleneck is geworden wordt het tijd een totale rewrite in een andere taal.
Thanks Dos.
Gewoon veel variabelen, zodat het duidelijk is wat het doet.
Geen gechain, intern meerdere classes doen. Tenzij het heel duidelijk is (in jouw geval van al die ::create() niet echt meer.

Ik code in Aptana en druk met een 'vreemd' (= andermans) document altijd eerst op CTRL+K, wat dus de tekst in een format gooit. Lekker leeg.
Liever 3000 regels leesbare code met veel ruimte dan 300 waar niet doorheen te komen is.

Reageren