Ursprungligen av LarsGDet är ingen bra programmering att använda globala variabler.
Intressant det där. Jag har gjort ett forum som nu enbart kräver ett par smärre justeringar innan det är färdigt, och däri använder jag ett antal globala variabler som defineras i en include-fil som körs allra först på sidorna. Bör jag göra på något annat sätt (och finns det något annat sätt)?
Det finns alltid ett annat sätt. Globala variabler är Dåliga Saker och bör undvikas i största möjliga utsträckning, eftersom man i princip alltid kan använda något annat.
Vill man till exempel göra sin databaskoppling globalt åtkomlig utan globala variabler, kan man göra så här:
Dim myVerySecretDbConn
set myVerySecretDbConn = Nothing
Function getDbConnection()
if myVerySecretDbConn = nothing then
set myVerySecretDbConn = ' öppna databasen...
end if
getDbConnection = myVerySecretDbConn
End Function
spango:
Okej. Jag har gjort detsamma med mina databaskopplingar, men det är inte där problemen ligger. Jag har inställningar (ex. namnet på forumet, antal trådar per forum som ska visas, e-mail adresser etc.) som körs i början av filerna. Kanske skulle man kunna göra något i stil med:
Function GetConfig(strConfigName)
Dim strCfg
Select Case Lcase(strConfigName)
Case "forumname": strCfg = "Jehovas"
Case "admin e-mail": strCfg = "god@jehovas.com"
Case "threads per page": strCfg = 34
End Select
GetConfig = strCfg
End Function
strNameOfThisBloodyForum = GetConfig("forumname")
Finns det något bättre sätt? För det rör sig om ganska många inställningar.
Ännu ett annat sätt är att skicka med variablerna som argument, men som by reference. Då "slipper" funktionerna returnera något, men variabeln ändras ändå.
Sub Edit ( ByRef str )
str = str & " Bajen!"
End Sub
Dim var
var = "Heja"
Edit ( var )
Response.Write var
Skälet till att man inte ska ha globala variabler är att om man ändrar värdet på den globala variabeln i en massa olika subbar/funktioner så blir det hemskt svårt att hitta felkällor m.m.. Man undviket inte bara globaler för att det är skoj ;)
262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e