Abstractie is het verbergen van ingewikkelde details achter een simpele, benoemde manier om ze te gebruiken. Je geeft een stuk code een duidelijke buitenkant (een functienaam, een knop, een verzoek) en alles wat eronder verstopt zit, blijft uit het zicht. Wie het gebruikt, hoeft alleen te weten wat het doet, niet hoe.
Denk aan autorijden. Je trapt het gaspedaal in en hij gaat sneller. Je denkt niet aan brandstofinjectie, ontstekingstiming of de versnellingsbak, terwijl dat allemaal gebeurt. Het pedaal is de abstractie: één simpele bediening boven op een hoop techniek. Software werkt net zo, en een nette API is een mooi voorbeeld van abstractie in de praktijk, want het ene systeem kan iets vragen aan het andere zonder iets te weten van de code erachter.
Goede abstractie maakt code ook leesbaar. Als je stuurFactuur(klant) kunt aanroepen in plaats van elke keer vijftig regels e-mail- en PDF-logica op te tuigen, is de bedoeling meteen duidelijk. Die helderheid is een groot deel van wat mensen bedoelen met clean code. Het loont het meest als er iets moet veranderen. Stel dat je betaalprovider overstapt van PayPal naar Stripe. Riep elk scherm in de app rechtstreeks de ruwe PayPal-code aan, dan zit je in tientallen bestanden te wroeten en maar te hopen dat je niks gemist hebt. Met een goede abstractie is er één belastKaart()-functie en herschrijf je alleen wat erachter zit. De rest van de app merkt er niets van. De valkuil is doorslaan. Verpak je alles in vijf lagen omleidingen, dan wordt de code juist moeilijker te volgen, niet makkelijker. De kunst is de paar plekken kiezen die er echt baat bij hebben en de rest gewoon laten.
Bij TopDevs zetten we abstractie bewust in, zodat de systemen die we bouwen makkelijk uitbreidbaar blijven, want de delen die het vaakst veranderen houden we achter een stabiele, simpele buitenkant.