La programmazione procedurale in Visual Basic consente di strutturare chiaramente il codice attraverso il riutilizzo delle sottomissioni (Sub, Function) per minimizzare la duplicazione e aumentare la leggibilità.
Inizialmente, la programmazione in VB si sviluppava attorno al lavoro con grandi blocchi di codice all'interno di form e moduli. Questo portava a una duplicazione della logica e complicava il debugging. La suddivisione in procedure e funzioni rappresentava un passo verso un'architettura più modulare.
Le applicazioni poco strutturate contengono codice identico in diverse posizioni, rendendo difficile la manutenzione, la correzione degli errori e riducendo il riutilizzo.
Utilizzare procedure (Sub) e funzioni (Function) con argomenti e valori di ritorno. È buona pratica estrarre la logica ripetitiva in metodi separati, seguendo il principio DRY (Don't Repeat Yourself).
Esempio di codice:
' Gestore che chiama una funzione riutilizzabile Sub btnCalculate_Click(sender As Object, e As EventArgs) Dim result As Double = CalculateDiscount(100, 0.2) MessageBox.Show($"Sconto: {result}") End Sub ' Funzione riutilizzabile Function CalculateDiscount(total As Double, rate As Double) As Double Return total * (1 - rate) End Function
Caratteristiche chiave:
È possibile dichiarare procedure e funzioni con lo stesso nome in Visual Basic se differiscono solo per il tipo di valori di ritorno?
In Visual Basic, il nome di una procedura o funzione deve essere univoco nel suo ambito di visibilità e il sovraccarico solo per tipo di valore di ritorno non è possibile. Il sovraccarico è supportato solo per le firme dei parametri.
Esempio di codice:
' ERRATO — errore di compilazione Function GetValue() As Integer Return 1 End Function Function GetValue() As String Return "Test" End Function
Se dichiaro un parametro come Optional, è obbligatorio specificare un valore predefinito?
Sì, per i parametri Optional è obbligatorio fornire un valore predefinito.
Esempio di codice:
Function Sum(a As Integer, Optional b As Integer = 0) As Integer Return a + b End Function
È possibile utilizzare Exit Sub/Exit Function per uscire non solo dalla procedura corrente, ma anche da quelle superiori?
No, Exit Sub/Exit Function esce solo dalla procedura corrente. Per gestire il flusso a livello di procedure esterne è necessario utilizzare strutture di controllo del flusso, come If/Return o gestione delle eccezioni.
Nel progetto, il calcolo dello sconto è implementato come frammento di codice separato in diversi gestori di eventi su diverse forme. Quando la formula viene modificata, è necessario correggere il codice manualmente in tutti i punti.
Vantaggi:
Svantaggi:
Estrazione del calcolo dello sconto in una funzione separata CalculateDiscount e utilizzo di essa in tutti i punti necessari attraverso le chiamate.
Vantaggi:
Svantaggi: