POD is een ingebouwd documentatieformaat in Perl, dat historisch samen met de uitbreiding van de taal voor de ondersteuning van grote projecten is ontstaan. Het fundamentele kenmerk: documentatie wordt altijd direct in de broncode opgeslagen, wat helpt om de verbinding tussen implementatie en beschrijving niet te verliezen (op dit moment is het in principe niet te scheiden van de ontwikkeling van complexe modules in Perl).
Probleem: vaak weten programmeurs het niet, of negeren ze systemen voor automatische documentgeneratie, ondanks dat het Perl-ecosysteem (CPAN) dit duidelijk eist voor alle modules.
Oplossing — gebruik POD voor elk bestand, elke klasse en functie. Voor automatisering zijn er tools zoals perldoc, pod2man, Pod::Coverage. Duidelijke regel: als je module geen POD heeft — wordt deze niet geaccepteerd in de bedrijfsomgeving of komt niet op CPAN.
Voorbeeldcode:
=head1 NAME My::Module - voorbeeld van gebruik van POD =head1 SYNOPSIS use My::Module; ... =head1 DESCRIPTION Deze functie doet... =cut
Belangrijkste eigenschappen:
Kan POD binnen een subroutine staan, en niet alleen aan het begin van een bestand?
Antwoord: Ja, de POD-specificatie staat invoegingen na elke belangrijke constructie toe: na de verklaring van functies, methoden, zelfs binnen blokken.
Wat gebeurt er als je code binnen een POD-blok schrijft?
Antwoord: Alles tussen =pod (of een andere kop) en =cut wordt door de interpreter genegeerd. De code daar wordt niet uitgevoerd! Dit is een veelgemaakte fout.
Hoe documenteer je private functies in POD?
Antwoord: Het is gebruikelijk om een sectie INTERNALS of PRIVATE FUNCTIONS toe te voegen, of dergelijke documentatie niet op te nemen in de SYNOPSIS. Het wordt niet aanbevolen om documentatie volledig te verbergen, vooral niet als de bibliotheek openbaar is.
De module wordt geleverd zonder documentatie. Nieuwe ontwikkelaars moeten de broncode lezen en zich een weg zien te banen door de magische parameters van functies.
Voordelen:
Nadelen:
Alle code is voorzien van POD, een gebruiksvoorbeeld is weergegeven in de SYNOPSIS-sectie, elke functie is beschreven, met een indicatie van beperkingen.
Voordelen:
Nadelen: