Door
Ozzie PHP
op 20-03-2014 14:27
gewijzigd op 20-03-2014 14:40
3.953 views
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?
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.
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.
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?
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.