Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [vb.net] ambito e validità variabili

    che differenza PRATICA c' è tra definire una variabile come Pubblica in un modulo, come privata un una classe (form) e poi chiamare una Sub che elabori quella variabile o passare dei dati direttamente ad una subrutine?

    cioè, per fare un esempio, se devo passare Dati1 e Dati 2 alla sub ElaboraDati(), che differenza PRATICA c' è tra dichiarare:

    -Public Data1, Data2 as integer (in un modulo) oppure
    -Dim Data1, Data2 as integer e poi chiamare
    -Private Sub ElaboraDati()

    oppure:
    -Call ElaboraDati(Data1, Data2) dove
    -Private Sub ElaboraDati(Data1 as integer, Data2 as integer)

    Spero di essermi spiegato...

    E' solo chiarezza di codice o c' è qualcosa di più?

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Direi che c'è molto di più.
    Ci sono un sacco di ragioni per non usare le variabili Public (o farlo con estrema parsimonia).

    Senza addentrarsi troppo in ragionamenti vari, la differenza è sostanziale ed implica il fatto che se usi una variabile globale (Public) non hai mai la certezza di cosa contenga nel momento in cui la usi, perchè non puoi ricordarti a memoria tutto il codice, quindi come fai ad essere sicuro che un'altra routine 'da qualche parte' non abbia modificato il valore che tu ti aspetti di trovare?
    Magari lo sai oggi, che stai iniziando a scrivere il programma da zero, ma pensa se fra 3 anni riprendi in mano il progetto per modificarlo ed hai usato molte variabili pubbliche...
    Ti sfido a capirci qualcosa.

    D'altra parte un pregio dei linguaggi NET è proprio quello di essere basato sulle classi per consentire di incapsulare il codice, l'ereditarietà, etc. etc. etc.

    Quindi, a mio avviso, meno si usano e meglio è.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.