diff --git a/racket-skill.md b/racket-skill.md index 0fcd9b5..52fd093 100644 --- a/racket-skill.md +++ b/racket-skill.md @@ -158,6 +158,20 @@ Geef de voorkeur aan λ boven lambda. - Maak foutafhandeling niet generieker dan nodig. - Als een externe executable of voorziening ontbreekt, meld precies wat ontbreekt en wat de gebruiker kan doen. +## Gebruik van modules en dependencies + +- Gebruik **nooit de interne datastructuur van een module/dependency**, tenzij die datastructuur publiek is, + d.w.z. onderdeel van de Application Programming Interface. +- Als een API ontoereikend is, d.w.z. er missende functionaliteit is in de provided functions of + public/protected functions van een class, dan werk je daar niet omheen door de interne data- + structuur rechtstreeks te gebruiken, maar signaleer je dat en stelt een API uitbreiding voor. +- Respecteer de publieke API van dependencies. Gebruik geen interne datastructuren of ongedocumenteerde representatie. +- Als de publieke API noodzakelijke functionaliteit, een predicate of een accessor mist, meld dit expliciet + als een API-tekort. Verberg dit niet met een lokale wrapper, een zwakker contract zoals `any/c`, of directe inspectie + van de interne datastructuur. +- Stel voor de dependency-API gericht uit te breiden. Pas pas een lokale workaround toe wanneer de gebruiker daar + bewust voor kiest. + ## Configuratie - Bewaar lokale configuratie in een kleine, afzonderlijke private module wanneer dat de hoofdmodule eenvoudiger maakt.