Voorkom vroegtijdige optimalisaties
Vroegtijdige optimalisatie, of premature optimisation, is een bekende neiging van veel software ontwikkelaars. Het is een idee verbonden aan Donald Knuth:
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:
- Het kost vaak extra tijd om een feature op te leveren (wat mij betreft niet het ergste)
- Het levert vaak code op die minder idiomatisch is, minder normaal
- 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.
- 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);