Hello Folks. Variabler med för stort scope kan (kommer att) användas av den som ska in och pilla om ett år och då kan man vara ganska säker på att variabeln byter värde när man inte vill. Hej :-) Hej igen >Statiska variabler i lokala procedurer skall man defenitivt aldrig använda. Egentligen håller jag nog med dig men det känns som om du hellre förespråker globala variabler än den objektorientering som trots allt finns i VB. Nä du SvenPon, nu har du allt tagit dig vatten över huvudet. Att man skall undvika att använda globala variabler så långt det går har inget med effektiviteten under programkörningen att göra utan effektiviteten när man utvecklar och underhåller mjukvara. Den spgettikod man får med för mycket globala variabler är en mardröm som DEFINITIVT skall undvikas. Hej Sven Hej på Er "...göra med under-Avliva en myt.!
Ofta ser man uttalande om att man inte skall ge en
variabel större "scope" än som är absolut nödvändigt.
Varför har jag aldrig förstått ? Det är skit samma ur effektivitet.
En Lokal variabel lämnar från sig sin minnesarea så fort programmet
når End Sub och åker vidare (variabeln dör).Kan väl anses effektivt.
Man skall undvika att använda Publica variabler från en BasModul. !
Varför ??? .Med BasModuler är det så att dom skulle ge sämre prestanda.
Med basmoduler är det så ,att första gången man använder dom
så tar det extra tid,därför dom laddas inte förrän man börjar använda dem.
När dom väl kommit i användning så är det ingen som helst skillnad i effektivitet.
Statiska variabler i lokala procedurer skall man defenitivt aldrig använda.
Tro att Vb är det enda progspråk som har denna avart kvar.
Om du behöver en Statisk variabel gör den till Global i den Form
den hör hemma.Statiska variabler är borttaget från .net
Statiska variabler ockuperar Stacken ,och försvinner inte när
programmet avslutas.
Ett vedträ i brasan
Sven :-)Sv: Avliva en myt.!
Jag satt med Access 2 och underhöll ett system med ca50 globala variabler som (mer eller mindre slumpmässigt) ändrade värde i hela systemet. Det var en avskräckande upplevelse.
Med ditt resonemang finns det ju ingen vits med objektorientering över huvud taget.
/johan/Sv: Avliva en myt.!
Klart att man skall använda Lokala variabler så långt det går
men man skall inte vara rädd för att utnyttja den "power" som
finns i Globala .Både i BasModuler och Formulär.
Dåliga program som ställer till det som du beskriver,får man ju skylla
på VB:s urkassa OOP och lata programmerare som inte förstår
vad dom ställer till..
Johan skriver :
>Med ditt resonemang finns det ju ingen vits med objektorientering över huvud taget
VB har aldrig varit ett program med objektorientering. !
Tycker SvenSv: Avliva en myt.!
Om du verkligen vill råka ut för trubbel så skall du skicka
en Global variabel till en Lokal Sub eller Funktion ByReference.
Sedan skall du ändra värdet på variabeln i den Lokala Sub/Func
Du skall alltid skriva så här Sub MinSub(ByVal input As ....)
likadant med Funktioner.
DSSv: Avliva en myt.!
>Tro att Vb är det enda progspråk som har denna avart kvar.
>Om du behöver en Statisk variabel gör den till Global i den Form
>den hör hemma.Statiska variabler är borttaget från .net
Ok. Så C/C++ räknas inte? Jag är inte så insatt i C#, men om de tar bort statiska variabler så tappar de 80% av C++-användarna direkt
>Statiska variabler ockuperar Stacken ,och försvinner inte när
>programmet avslutas.
Är du 100% säker på det?
Vad jag vet så finns det inget skäl till att det skulle vara så överhuvudtaget. Statiska variabler kan utan problem allokeras vid starten av ett program eller vid första inträdet i en funktion/sub.
Att det sedan inte skulle dellokeras vore fullkomligt idiotiskt. Det skulle i så fall betyda att VB kan hålla reda på vilka objekt du skapar och indirekt tar bort, men inte sina egna statiska variabler som är hur lätta som helst att hålla reda på.
/Niklas JanssonSv: Avliva en myt.!
/johan/Sv: Avliva en myt.!
//TordSv: Avliva en myt.!
Jag måste erkänna att jag är en av dem som förespråkar att undvika
variabler i ett större scope än nödvändigt - jag har dock aldrig sagt ett pip
om att det skulle vara effektivare - vilket jag förutsatt att det inte är
eftersom jag inte testat eller försökt bevisa motsatsen.
Dock (som påpekats tidigare här i tråden) har det att göra med under-
hållningen av koden. Den som skriver den har normalt full kontroll på
sin kod under själva utvecklandet. Dock ställer variabler som finns i större
scope än nödvändigt till ett H-vete vid underhåll (både för utvecklaren
som hunnit glömma sin kod och andra).
Trots dessa åsikter händer det att jag använder globala variabler - men
då är jag också fullt medveten om vad jag gör och det är ett medvetet
val jag träffat under utvecklingen - och det finns alltid en kommentar
till som förklarar varför den ligger där - just för underhållningssyfte.
Mvh EmmaSv: Avliva en myt.!
Bra där fick jag upp adrenalinet på Er.
Hoppas många nybörjare läst och tagit till sig.
ha det
SvenSv: Avliva en myt.!
hållningen av koden."
"... - just för underhållningssyfte."
Hmm, viss skillnad på underhåll och underhållning va? ;-)