In Visual Basic ermöglicht die prozedurale Programmierung eine klare Strukturierung des Codes durch die wiederholte Verwendung von Unterprogrammen (Sub, Function), um Duplikate zu minimieren und die Lesbarkeit zu erhöhen.
Ursprünglich entwickelte sich die Programmierung in VB um die Arbeit mit großen Codeblöcken innerhalb von Formularen und Modulen. Dies führte zu Duplizierungen in der Logik und erschwerte das Debugging. Die Aufteilung in Prozeduren und Funktionen stellte einen Übergang zu einer modulareren Architektur dar.
Schlecht strukturierte Anwendungen enthalten identischen Code an verschiedenen Stellen, was die Wartung, Fehlerbehebung und die Wiederverwendbarkeit erschwert.
Verwendung von Prozeduren (Sub) und Funktionen (Function) mit Argumenten und Rückgabewerten. Eine gute Praxis ist es, wiederholende Logik in separate Methoden auszulagern und das DRY-Prinzip (Don't Repeat Yourself) zu beachten.
Beispiel für den Code:
' Handler, der die wiederverwendbare Funktion aufruft Sub btnCalculate_Click(sender As Object, e As EventArgs) Dim result As Double = CalculateDiscount(100, 0.2) MessageBox.Show($"Rabatt: {result}") End Sub ' Wiederverwendbare Funktion Function CalculateDiscount(total As Double, rate As Double) As Double Return total * (1 - rate) End Function
Schlüsselfunktionen:
Kann man in Visual Basic Prozeduren und Funktionen mit demselben Namen deklarieren, wenn sich nur die Rückgabewerte unterscheiden?
In Visual Basic muss der Name einer Prozedur oder Funktion einzigartig im aktuellen Geltungsbereich sein und eine Überladung nur basierend auf dem Rückgabetyp ist nicht möglich. Überladung wird nur nach Parameter-Signaturen unterstützt.
Beispiel für den Code:
' FALSCH — Kompilierungsfehler Function GetValue() As Integer Return 1 End Function Function GetValue() As String Return "Test" End Function
Wenn man einen Parameter als Optional deklariert, ist es dann notwendig, einen Standardwert anzugeben?
Ja, für optionale Parameter muss unbedingt ein Standardwert angegeben werden.
Beispiel für den Code:
Function Sum(a As Integer, Optional b As Integer = 0) As Integer Return a + b End Function
Kann man Exit Sub/Exit Function verwenden, um nicht nur die aktuelle Prozedur, sondern auch übergeordnete zu verlassen?
Nein, Exit Sub/Exit Function verlässt nur die aktuelle Prozedur. Für die Steuerung des Flusses auf der Ebene übergeordneter Prozeduren müssen Steuerungsstrukturen wie If/Return oder Ausnahmebehandlungen verwendet werden.
Im Projekt wird die Rabattberechnung als separate Codefragment in mehreren Ereignis-Handlern in unterschiedlichen Formularen implementiert. Bei Änderungen an der Formel muss der Code an allen Stellen manuell angepasst werden.
Vorteile:
Nachteile:
Auslagerung der Rabattberechnung in eine separate Funktion CalculateDiscount und deren Verwendung an allen benötigten Stellen durch Aufrufe.
Vorteile:
Nachteile: