Code commentaar¶
Wanneer je herbruikbare code maakt in een functie, dan betekent dit dat de functie elders toepasbaar is zonder wijzigingen en zonder fouten.
Een andere ontwikkelaar moet de functie dan ook toe kunnen passen. Daarvoor hoeft deze de code niet te kennen. Het is alleen nodig om te weten hoe de functie werkt.
Daarvoor is documentatie nodig. Dat schrijven we direct boven de functie in commentaar (als we met Javascript, Typescript of Java werken) of direct onder de declaratie van de functie (als we met Python werken). In Javascript en Typescript staat het dan tussen /*
en */
. In Python staat het achter een #
op elke regel.
Engelse taal
Let er op dat je code en de documentatie in het Engels schrijft. Zo is het resultaat ook uitwisselbaar met mensen buiten Nederland.
Elke methode, klasse of attribuut moet voorafgegaan worden door een toelichting:
- Wat is het doel?
- Wat levert de methode op? (javadoc
@return
) - Wat betekenen de parameters van de methode? (javadoc
@param
)
Standaard¶
Een goede standaard voor het documenteren wordt geautomatiseerd met Javadoc, een plugin die op steeds dezelfde manier deze documentatie kan maken voor Javascript, Typescript en Java, waar je dan alleen nog specifieke details hoeft toe te voegen.
Static site generators als Javadoc geven de mogelijkheid om heel veel onderwerpen op te nemen in de documentatie, maar de meest essentiële zijn;
- De naam van de functie zelf
- De toepassing van de functie, waar deze voor bedoeld is. Je beschrijft dus niet hoe de functie werkt, dat kan je halen uit de code).
- Elke parameter die de functie aanneemt om het werk uit te voeren, inclusief het datatype.
- De uitvoer (return) terug aan de aanroepende code, als datatype.
Functienaam
Je kan ervoor kiezen om de naam niet op te nemen, dat zie je direct in de eerste regel (bv public function(....) : void {
).
Je kan er ook voor kiezen om bij de parameters niet het datatype op te nemen als je met een taal werkt waar dit expliciet wordt vermeld. Bij b.v. Python vermeld je het dan wel, omdat het in Python uit de code niet af te leiden is welke datatypes worden verwacht.
Los daarvan kan je ook nog benoemen wie de functie voor het eerst heeft geschreven, wanneer, een versienummer en nog meer. Zie Javadoc
Voorbeeld¶
Laten we zeggen dat we een klasse Playground
hebben met wat losse functies om mee te spelen en van te leren hoe je code documenteert.
Nu gaan we een functie definiëren die van 2 getallen het product uitrekent en teruggeeft aan de code die deze functie aanroept.
We willen die functie zo aan kunnen roepen:
Deze functie definiëren we dan als volgt;
Afhankelijk van de programmeertaal documenteren we deze functie in het volgende stramien.
Dit wordt dan:
In het volgende voorbeeld doen we hetzelfde voor een andere functie met andere datatypes als argument en return value. We willen code schrijven om iemands volledige naam op het scherm te printen.
Dit kan je voor elkaar krijgen door een functie te specificeren die deze twee strings verwerkt en als één string teruggeeft.
In sommige gevallen is er geen return value. De functie wordt dan uitgevoerd en houdt op zodra de code is uitgevoerd. Dan vermeld je wel de return value, maar dat is in dit geval niks, oftewel ‘void’. In Typescript moet je dit aangeven in de code, in Python hoeft dit niet.
Inhoud¶
Commentaar moet het waarom toelichten en niet herhalen wat er al staat.