Subprogramma: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Siskus (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 4:
Sommige programmeertalen, zoals [[Pascal (programmeertaal)|Pascal]] en [[PL/SQL]], maken onderscheid tussen procedures en functies; functies zijn dan een speciaal geval van procedures, die een resultaatwaarde retourneren aan het aanroepende programma. Ze worden vooral gebruikt voor het implementeren van [[functie (wiskunde)|wiskundige functies]].
 
In andere talen, zoals [[C (programmeertaal)|C]] en [[Scala_Scala (programmeertaal)|Scala]], worden alle subroutines functies genoemd, ook als ze geen waarde retourneren. Ze retourneren als het ware een leeg type, bijvoorbeeld <code>void</code>, of <code>Unit</code> o.i.d.
 
In [[functionele programmeertaal|functionele talen]] worden (vrijwel) alleen functies in de [[wiskunde|wiskundige]] zin gebruikt. In zuiver functionele talen als [[Haskell (programmeertaal)|Haskell]] en [[Clean (programmeertaal)|Clean]] kunnen deze functies zelfs geen neveneffecten veroorzaken.
Regel 14:
* om redundantie te vermijden, [[DRY|Don't Repeat Yourself]] (DRY) principe;
* om code in meerdere programma's en toepassingen te kunnen hergebruiken, [[Single-Point-of-Definition]];
* om de complexiteit van een programma in kleinere, beter beheersbare delen te kunnen opsplitsen;
* om de leesbaarheid van een programma te verbeteren;
* om een deel van een programma te verbergen of beschermen.
 
== Parameters en returnwaarden ==
Veel programmeertalen faciliteren het doorgeven van gegevens tussen het aanroepende programma en het subprogramma. Deze gegevens worden vanuit het aanroepende programma aan het subprogramma doorgegeven als parameters.
subprogramma. Deze gegevens worden vanuit het aanroepende programma aan het subprogramma doorgegeven als parameters.
Hierbij wordt onderscheid gemaakt tussen invoer- en uitvoerparameters. Invoerparameters geven alleen waarden aan het subprogramma door. Uitvoerparameters geven data vanuit het subprogramma terug aan het hoofdprogramma.
Meer strikte talen als [[C♯|C#]] kennen een aparte type waarin de parameters beiden kunnen zijn, andere talen gebruiken de uitvoerparameters tevens als invoerparameter.
Regel 34 ⟶ 33:
 
== Gezond programmeren ==
Vanuit het oogpunt van [[gestructureerd programmeren]] gelden verschillende vuistregels bij het schrijven van subroutines.
* Allereerst dienen zowel de procedure zelf als de parameters ''speaking names'', dus zichzelf verklarende namen te hebben.
* Een subroutine hoort één en slechts één taak uit te voeren. Wanneer er twee taken zijn, breng deze dan in twee subroutines onder.
* Een subroutine dient evenals elk [[computerprogramma|programma]] slechts één ingang en één uitgang te hebben.
* Een subroutine heeft ''strong cohesion'' en ''weak coupling'', dat wil zeggen dat de elementen binnen de subroutine een sterke samenhang vertonen en naar buiten toe slechts weinig raakvlakken hebben.