Questa domanda è stata sollevata durante una discussione sugli standard, che dovrebbe ruotare attorno ai principi SOLID per lo sviluppo orientato agli oggetti.
Nelle tue esperienze, hai visto vantaggi o svantaggi sia nella leggibilità del codice sia nelle prestazioni in base al fatto che le variabili siano passate ByRef vs Variabile a livello di modulo?
Ovviamente: se un metodo chiama un submethod, che non solo userà ma modificherà anche un parametro, dovrebbe essere passato come un puntatore di riferimento (aka: ByRef).
Sulla base di questa logica, alcuni nella mia discussione sono molto severi per non usare mai variabili a livello di modulo.
In risposta, dico che abbiamo una cassetta degli attrezzi e dovremmo sapere quando usare quale strumento. Ad esempio, un sub dichiara una variabile. Questo sub chiama una funzione, che chiama un sub, che chiama una funzione, che chiama un sub, ecc. Ecc., E alla fine quella variabile viene cambiata di 10 metodi lungo la linea.
Direi di rendere tale variabile un livello di modulo, mentre alcuni dicono di passarlo ByRef attraverso l'albero dei metodi.
Quindi, dove è la linea quando si esaminano i Principi OOP SOLID?
Vai con un estremo ?:
Non utilizzare mai ByRef o Non utilizzare mai variabili a livello di modulo.
O hai impostato una profondità di routine?:
Metodo 1, sempre ByRef; 2 in profondità, consideralo; 3 profondità, a livello di modulo variabile.
O forse un Principio Branching ?:
Se, nella tua lista di metodi, la variabile viene realmente aggiornata solo in un punto, quindi passa ByRef fino all'originale ... Per rimuoverli tutti. Ma se la variabile viene modificata durante più stadi in più rami dell'albero dei metodi, rendilo a livello di modulo.
Se quest'ultimo è il caso, dovrebbe anche significare 20 metodi lungo la linea, ByRef fino all'originale va ancora bene? O forse un ibrido di queste possibili regole. Cosa ne pensi?