vrijdag 7 maart 2008

Nog meer gepruts

Waarom maakt iemand een C-functie van 1561 regels? Is het een vorm van job protection (“ik ben de enige die dit snapt, dus niemand anders kan aan dit programma werken, dus ze kunnen me niet ontslaan”)? Of is het omdat ze nooit behoorlijk hebben leren programmeren? Laat ik het maar op het laatste houden. “Never attribute to malice that which can be adequately explained by stupidity.”

Een voorbeeld? Ok.

Ze willen bepalen of er onverwerkt aanbod is. Dus tellen ze eerst al het aanbod, dan tellen ze het verwerkte aanbod, en als er verschil tussen die aantallen is dan weten ze dat er onverwerkt aanbod is. Maar waarom zou je niet meteen gewoon het onverwerkte aanbod tellen? Hup, daar gaan ruim 20 regels weg.

Nog een voorbeeld? Tuurlijk. 't Wordt nu wel een beetje technisch, hoor.

Ze gaan 't een en ander opzoeken in de database, en wat ze vinden voegen ze toe aan een lijstje. Het vergt in dit geval ruim 60 regels code (van de 1561). Er zit een SQL-query in, en die ziet er er zo uit:

SELECT … FROM … WHERE … AND a.ownerid = :uvb_eigenaar;

(Die :uvb_eigenaar is één van de parameters. Ze voeren dit stukje meerdere keren uit, telkens met andere waarden in de parameters.)

Meteen daarna staat een vrijwel identiek stuk code. Dus weer ruim 60 regels. Het enige verschil is één deeltje van de SQL-query. Die ziet er nu zo uit:

SELECT … FROM … WHERE … AND a.ownerid = 1;

Nu hebben we dus 60 regels teveel. We kunnen namelijk ook een aparte functie maken, die we twee keer aanroepen: eerst met :uvb_eigenaar en dan met 1. We hebben dan weliswaar een nieuwe functie van ruim 60 regels, maar de originele functie van 1561 regels wordt zowat 120 regels korter. En als we die nieuwe functie nou ook nog een mooie naam geven, bv. get_onverwerkt_aanbod(), dan snappen we meteen wat 'ie doet, zonder dat we al die code hoeven te bekijken.

Ik kan nog genoeg andere voorbeelden geven, maar dat zal ik jullie niet aandoen.

Geen opmerkingen:

Een reactie plaatsen