In Visual Basic stelt procedureel programmeren je in staat om code duidelijk te structureren door herhaald gebruik van subprogramma's (Sub, Function) om duplicatie te minimaliseren en leesbaarheid te verhogen.
Oorspronkelijk ontwikkelde programmeren in VB zich rondom het werken met grote codeblokken binnen formulieren en modules. Dit leidde tot duplicatie van logica en bemoeilijkte debugging. Het opsplitsen in procedures en functies betekende een overgang naar een meer modulaire architectuur.
Slecht gestructureerde applicaties bevatten dezelfde code op verschillende plaatsen, wat onderhoud lastig maakt, foutopsporing bemoeilijkt en herbruikbaarheid vermindert.
Gebruik procedures (Sub) en functies (Function) met argumenten en retourwaarden. Een goede praktijk is om herhalende logica in afzonderlijke methoden te plaatsen, in overeenstemming met het DRY-principe (Don't Repeat Yourself).
Codevoorbeeld:
' Handler die de herbruikbare functie aanroept Sub btnCalculate_Click(sender As Object, e As EventArgs) Dim result As Double = CalculateDiscount(100, 0.2) MessageBox.Show($"Korting: {result}") End Sub ' Herbruikbare functie Function CalculateDiscount(total As Double, rate As Double) As Double Return total * (1 - rate) End Function
Belangrijkste kenmerken:
Is het mogelijk om procedures en functies in Visual Basic met dezelfde naam te declareren, als ze alleen verschillende retourtypen hebben?
In Visual Basic moet de naam van een procedure of functie uniek zijn in zijn scope, en overloading alleen op basis van het retourtype is niet mogelijk. Overloading wordt alleen ondersteund op basis van parameter-signaturen.
Codevoorbeeld:
' ONJUIST — compilatiefout Function GetValue() As Integer Return 1 End Function Function GetValue() As String Return "Test" End Function
Als een parameter als Optional is gedeclareerd, is het dan verplicht om een standaardwaarde op te geven?
Ja, voor Optional-parameters is het verplicht een standaardwaarde op te geven.
Codevoorbeeld:
Function Sum(a As Integer, Optional b As Integer = 0) As Integer Return a + b End Function
Kan Exit Sub/Exit Function worden gebruikt om niet alleen uit de huidige procedure te komen, maar ook uit bovenliggende procedures?
Nee, Exit Sub/Exit Function verlaat alleen de huidige procedure. Voor het beheren van de stroom op het niveau van externe procedures moet je stroombeheersstructuren gebruiken, zoals If/Return of exception handling.
In een project wordt de korting berekend met een apart codefragment in verschillende event handlers op verschillende formulieren. Bij wijziging van de formule moet de code op alle plaatsen handmatig worden aangepast.
Voordelen:
Nadelen:
De berekening van de korting in een aparte functie CalculateDiscount plaatsen en deze in alle benodigde plaatsen aanroepen.
Voordelen:
Nadelen: