Hey guys,

Bestaat er binnen het programmeren eigenlijk zoiets als een "1 opdracht per regel" principe?

Wat ik bedoel is dit. Je kan iets in 1 regel schrijven (wat ik zelf wel eens doe):

<?php
return !empty($_SERVER['HTTP_ACCEPT_ENCODING']) ? explode(',', str_replace([' ', ';'], ['', ','], $_SERVER['HTTP_ACCEPT_ENCODING'])) : [];
?>
Maar je kan ook 1 opdracht per regel doen:

<?php
if (empty($_SERVER['HTTP_ACCEPT_ENCODING'])) return [];
$_SERVER['HTTP_ACCEPT_ENCODING'] = str_replace([' ', ';'], ['', ','], $_SERVER['HTTP_ACCEPT_ENCODING']);
$_SERVER['HTTP_ACCEPT_ENCODING'] = explode(',', $_SERVER['HTTP_ACCEPT_ENCODING']);
return $_SERVER['HTTP_ACCEPT_ENCODING'];
?>
Als je 1 opdracht per regel doet, is het beter leesbaar... en nu vroeg ik me dus af of er een soort "regel/principe" bestaat waarbij je slechts 1 opdracht per regel uitvoert. Iemand die dat weet?

- regels bestaan er niet
- principes gaan over de gedachtegang, niet over de code er uit ziet, staan over welke code standaard je gebruikt.

Of er zo'n coding standard bestaat? Er zal vast wel een bedrijf ergens op de wereld die code standaard hebben...
Altijd grappig al jouw vragen :) Wat vind je hiervan, wat vind je daarvan, hoe zou jij dit doen, hoe zou jij dat doen.

Heel veel dingen zijn natuurlijk gewoon persoonlijk. Ik kan me niet voorstellen dat er een wereldwijde afspraak is hoe je iets moet opbouwen. Je zou hier hooguit in een SCRUM team afspraken over kunnen maken omdat dan iedereen met je code overweg moet kunnen.

In sommige gevallen doe ik het als voorbeeld 1, en als het echt te lang wordt (als in; in de editor past het niet meer op 1 regel, wordt onoverzichtelijk) doe ik het als voorbeeld 2. Maar net hoe het uit komt.
Michael, php kent de PSR standaarden die door praktisch alle open source projecten worden ondersteund.
Komt mij niet bekend voor. Heb je hier een linkje met uitleg voor? Google brengt me weer eens alleen onzin :)
Ah oke... ik dacht misschien bestaat zo'n principe. Maar nee dus :)

[size=xsmall]Toevoeging op 20/03/2014 14:45:33:[/size]

Is voorbeeld 2 trouwens slimmmer dan voorbeeld 1?

Voorbeeld 2 is beter leesbaar, maar je kopieert wel een paar keer variabelen. Wat is de beste optie?
PSR-2 is een stijlboek, geen woordenboek.

Een woordenboek is vrij resoluut: dit woord schrijven we altijd zó en dat woord komt in onze taal niet voor. Een woordenboek hebben we vaak ook helemaal niet nodig, want onze woordenschat en de correcte spelling zijn al grotendeels vastgelegd in PHP zelf.

Een stijlboek is genuanceerder: we schrijven iets liever zus dan zo. En dan komt het aan op smaak, leesbaarheid, algemene of juist zeldzame toepassingen, enzovoort.

Maar om de vraag van Ozzie te beantwoorden. Ja, ik gebruik liever één expressie per regel. Dat houdt code goed leesbaar. En het werkt makkelijker als je wat wilt verplaatsen of herschrijven.

Als je heel streng bent voor jezelf, en voor je eigen code, moet je de structuur liefst in één oogopslag zien, zonder blind te varen op de automatische highlighting van samenhangende haakjes en accolades in je editor.
Thanks Ward,

Ik was eigenlijk altijd ervoor om zoveel mogelijk op 1 regel te proppen. Maar één expressie per regel leest inderdaad een stuk makkelijker, en maakt het voor jezelf ook makkelijker om de code te schrijven.

Doe je echt altijd maar 1 expressie per regel?

Je zou dus ook echt dit doen:

<?php
$_SERVER['HTTP_ACCEPT_ENCODING'] = explode(',', $_SERVER['HTTP_ACCEPT_ENCODING']);
return $_SERVER['HTTP_ACCEPT_ENCODING'];
?>
En dus niet dit?

<?php
return explode(',', $_SERVER['HTTP_ACCEPT_ENCODING']);
?>
Correct?
Die 2 code blokken doen beide iets totaal anders. Dat is appels met peren vergelijken...
Ik deed vroeger, sterk vereenvoudigd, vaak zoiets:

<?php
$y = c(b(a($x)));
?>

Dat is bij nader inzien helemaal niet zo handig, vooral wanneer de functies aanzienlijk complexer zijn met een argumenten, objecten, enzovoort.

Dan toch maar liever zo:

<?php
$y = a($x);
$y = b($y);
$y = c($y);
?>

Je kunt het ook nog anders zeggen. Algoritmen en natuurwetten kun je vaak in één vergelijking uitschrijven. Hetzelfde geldt voor veel economische wetten. Maar dat wil niet zeggen dat dat ook de beste manier is om ze te programmeren. Dan kun je vaak beter de stappen van het algoritme uitschrijven, zoals je dat bij algebra ooit geleerd hebt.

Reageren