Voorkom vroegtijdige optimalisaties

An article, posted 1 day ago filed in javascript, programming, premature, optimalisatie, tijd & clean code.

Vroegtijdige optimalisatie, of premature optimisation, is een bekende neiging van veel software ontwikkelaars. Het is een idee verbonden aan Donald Knuth:

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%

Veel ontwikkelaars halen eer uit het maken van slimme oplossingen die het draaien van de code net een beetje sneller zouden kunnen maken. Maar er zijn kosten verbonden aan premature optimalisaties:

  1. Het kost vaak extra tijd om een feature op te leveren (wat mij betreft niet het ergste)
  2. Het levert vaak code op die minder idiomatisch is, minder normaal
    1. Veel compilers richten zich ook vaak op het optimaliseren van veel voorkomende code-constructies. Compilers worden steeds verder doorontwikkeld. Soms zijn tijdelijk slimme oplossingen op de langere termijn trager.
  3. Nieuwe features zijn vaak lastiger toe te voegen doordat de code over het algemeen complexer is.

Het treurige is dat naast deze nadelen de tijd die het kost vaak elders gebruikt had kunnen worden om échte problemen op te lossen.

Let op: het gebruik maken van slimme taal features om code juist expressiever te maken valt hier nadrukkelijk niet onder. Soms wordt er over een hele set geïtereerd om simpelweg het eerste te vinden dat iets aan een bepaalde voorwaarde voldoet, zoals hieronder:

const groep = [4, 90, 2, 13, 42, 12, ...];
const groterDanVijftig = groep.select((element) => element > 50);
const eersteGroterDanVijftig = largerThanFifty[0];

In JavaScript kun je daarvoor b.v. beter een find doen

const eersteGroterDanVijftig = groep.find((element) => element > 50);

Vond je dit leuk, volg me op Mastodon, voeg die RSS, euh ATOM feed toe aan je feedreader, of schrijf je hieronder in op mijn nieuwsbrief.

Op de hoogte blijven?

Maandelijks maak ik een selectie artikelen en zorg ik voor wat extra context bij de meer technische stukken. Schrijf je hieronder in:

Mailfrequentie = 1x per maand. Je privacy wordt serieus genomen: de mailinglijst bestaat alleen op onze servers.