webForumDet fria alternativet

option explicit / DIM av variabler

ASP

28 svar · 709 visningar · startad av Eclipse

Medlem sedan juli 20003 825 inlägg
Frågan#1

Hur gör ni när ni DIMar variabler?

Jag har skrivit:

DIM x_ID, x_created, x_updated, x_date, x_subject, x_text, x_viewTo

Jag har också sett varianter där man skriver variablerna under varandra, men det är kanske för tydlighetens skull.

Däremot fattar jag inte varför man inte kan skriva som man måste skriva i Visual Basic, typ:

DIM x_date as date

Hur skriver ni i stora projekt? I små pluttegrejer som att lista poster från en gästbok är alldeles för enkelt utan jag syftar på värsta tänkbara scenario med massa includefiler och från kanske 50-75 olika varaiablenamn. Hur skriver man en sån grej tydligt!?

Medlem sedan aug. 20002 272 inlägg
#2

Jag dimar på följande sätt:

Dim, x1, x2, x3, x4, x5 osv...

Medlem sedan juli 20003 825 inlägg
#3

OK, det föstår jag...

Men det var steget efter jag ville åt. Låt mig uttrycka mig lite bättre.

Skriver ni alla DIM grejset längst upp på första sidan, även de som finns inne i includefilerna eller DIMar ni precis innan namnet förekommer, då det behövs liksom.

Fördelen med en första varianten är att man ser vilka variabler som finns med på sidan, fördelen med den andra varaianten är att variabler tilldelas då de behövs på relevant ställe i koden.

Hela anledningen med option explicit är att man ska hitta felstavade variabelnamn... men poängen försvinner lite om man "bara skriver på" och DIMar allt som finns.

I så fall skulle man kunna inckludera en fil där man har alla 100 variabelnamnen DIMade och sen bara kör på... Och om man skulle hitta på ett namn som inte finns bara lägga till det... och includera hela listan på alla sidor??

Medlem sedan okt. 20005 273 inlägg
#4

Jag dimar allt högst upp på sidan på följande sätt

Dim strUser
Dim intAntal
Dim dteDag

Det tycker jag är klart lättast att läsa och man får en överblick vilka variablar som används på sidan......

Medlem sedan aug. 20002 272 inlägg
#5

jahadå...

Då försöker jag en gång till.. ;)

JAG tycker det är smidigast att "dimma" variablerna där de används... (Altså på flera ställen i koden!

Jag tycker det låter heljobbigt att "dimma" t.ex variabel_x som finns i en sida som inkluderas...

Det är min åsikt!

Medlem sedan mars 2001309 inlägg
#6

Däremot fattar jag inte varför man inte kan skriva som man måste skriva i Visual Basic, typ:
DIM x_date as date

Anledningen till att man inte skriver så är att i VBScript används alltid datatypen variant.

Så alla variabler du declarerar ser igentligen ut egentligen följande.

DIM x_date as variant

Rätta mig om jag har fel !

Medlem sedan juli 20003 825 inlägg
#7

Ursprungligen av icaaq **Jag dimar allt högst upp på sidan på följande sätt

Dim strUser
Dim intAntal
Dim dteDag

Det tycker jag är klart lättast att läsa och man får en överblick vilka variablar som används på sidan......**

Ja men nu frågade jag inte hur ni gör närr ni har tre eller 20 variabelnamn utan hur ni gör när ni har 50 eller fler. Alltså oöverskådligt många.

Medlem sedan okt. 20005 273 inlägg
#8

Ursprungligen av Eclipse

Ja men nu frågade jag inte hur ni gör närr ni har tre eller 20 variabelnamn utan hur ni gör när ni har 50 eller fler. Alltså oöverskådligt många.

Då skulle nog jag kommenterat mina variablar typ

*Dessa variblar används vid det första recordsettet (rad 10 till 20)
Dim strSQL
Dim ObjRS
...
...
...

Jag har aldrig gjort nått sånt, men jag skulle nog uppskatat det om jag skulle ta "över" koden från nån annan.......man kan ju inte kommentera för mycket.....

PS. Detta är vad jag skulle göra och inte nån metod som jag tycker att alla ska "köra" DS.

Medlem sedan juni 200032 967 inlägg
#9

Jag slänger upp allt överst, alltid. Jag grupperar mina variabler efter datatyp / subtyp.

' Declare all integers
Dim intCounter ' as integer
Dim intCollectThing ' as integer

' Declare all longs
Dim lngArticleID ' as long
Dim lngThingy as long

' Declare objects
Dim objFileSystem ' as Scripting.Filesystemobject
Dim objXmlDox ' as MSXML2.DOMDocument

' Declare strings
Dim strArticleName ' as String

Jag skriver som jag gör i Visual Basic, och lägger in lite remark-apostrofer här och där för att slippa syntaxfel.

Det gäller att vara tydlig, det är inte jag som ska förstå koden.
Men det är ju en smaksak. :-)

Mvh,

Medlem sedan okt. 20005 273 inlägg
#10

Det gäller att vara tydlig, det är inte jag som ska förstå koden.

hehehe....... ;)

Medlem sedan juli 20003 825 inlägg
#11

OK, @nders, det verkar vara ett bra sätt men faktum kvarstår, det blir FETT med scroll med den varianten.

Vad tycker ni om att includera en fil med alla DIMade variabler och sen använda den filen på varje sida?

Hmm... det kanske inte är så bra trots allt... jag har lite svårt att bestämma mig.

De flesta av mina namn återkommer i varje tabell, x_name, x_created, x_date osv. Om man då en gång för alla DIMar dom så blir det ju bra... Även om dom innehåller olika värden varje gång så är de fortfarande relevbanta i sitt sammanhang.

Hajjar ni??

Kort frågat, är det någon uppenbar nackdel att DIMa för mycket??

Medlem sedan juni 20019 024 inlägg
#12

Jag grupperar alltid överst och alltid efter vad de genomför.

Ja men nu frågade jag inte hur ni gör närr ni har tre eller 20 variabelnamn utan hur ni gör när ni har 50 eller fler. Alltså oöverskådligt många.

You asked for it!
Jag har plockat bort en hel del, för överskådlighetens skull... ;)

' Databasinställningar.
Dim cfg_DatabaseDriver, cfg_ConnString

' Sökvägar.
Dim cfg_PaceBoardLocalPath, cfg_ForumLogFilename, cfg_PaceBoardURL, cfg_LogFilesURL
...

' Foruminställningar (namn, admin, version, prefix etc).
Dim cfg_ForumVersion, cfg_ForumBuildDate, cfg_ForumBuildNumber, cfg_PaceBoardPrefix
...

' Extra moduler
Dim cfg_ShowLoggedInUsers, cfg_EmailActivated

' Tråd- och användarinställningar (antal tecken i användarnamn, trådar/forum, max sökresultat, forumkod etc).
Dim cfg_UserTimeOut, cfg_UsernameInvalidChars, cfg_UsernameMaxLength, cfg_SignatureMaxLength, ...

' Databas variabler.
Dim Connection, SQL, rs

' Diverse variabler.
Dim forumName, topicName, topicID, forumID, tmp, action, errMsg, strStartTimer
Dim intPrivateForum
Medlem sedan juli 20003 825 inlägg
#13

Ah! Läckert! Här om dagen konstaterade jag att jag i en annan tråd tidigare diggade dina val av variabelnamn och precis som då känner jag stor sympati för namn som cfg_UsernameMaxLength. Jag kan iofs inte på rak arm fatta vad "cfg" betyder, kanske configfile eller liknande. Men det går inte att missuppfatta i alla fall! :-)

Vi har diskuterat val av variabel namn och vi har liknande syn på temat.

----
Hur skulle ni göra med nedanstående kod? Ta er ann skiten eller bara skita i det? Scenen är ett webbverktyg och filen i fråga är för administratörerna att i rent informativt syfte kunna få reda på medlemmars adressuppgifter.

Vad jag menar är, det känns lite meningslöst att lägga tid på prestanda på A: En fil som nästan inte innehåller någon data. B: En fil som kanske har 20 - 50 klick i veckan.

<%
SQL = "SELECT * FROM [users] WHERE [x_ID] = " & request("ID") & ";"
set mySQL = Conn.Execute(SQL)
on error resume next

x_firstname = mySQL("x_firstname")
x_lastname  = mySQL("x_lastname")
x_company   = mySQL("x_company")
x_email     = mySQL("x_email")
x_street    = mySQL("x_street")
x_zip       = mySQL("x_zip")
x_city      = mySQL("x_city")
x_phone     = mySQL("x_phone")
x_directphone = mySQL("x_directphone")
x_cellular  = mySQL("x_cellular")
x_fax       = mySQL("x_fax")
x_created   = mySQL("x_created")
x_lastVisit = mySQL("x_lastVisit")

%>
Medlem sedan mars 20002 836 inlägg
#14

Det man ska "fatta" eller andra ska "fatta" är vad det är för typ av variabel och vad innehållet ska vara. Tex om det handlar om tex ett användarnamn så bör man prefixa och namnge den efter följande:

strUserName

Då ser man direkt att variabeln är av typen string och den ska innehålla ett användarnamn. Om det är ett användarid:

lngUserID

På detta sätt ser man att variabeln är av typen Long och ska innehålla ett UserID

Lättare än så kan det inte bli

använder man som på detta vis: x_Subject så ser man endast vad den ska innehålla men ej vad det är för typ, strint, integer, long, date etc.

@ndersmetod är den klart bästa då man har mycket "gratis" om man i ett senare skede skull vilja göra en komponent av sin kod

cya,
PatrikB

Medlem sedan juli 20003 825 inlägg
#15

använder man som på detta vis: x_Subject så ser man endast vad den ska innehålla men ej vad det är för typ, strint, integer, long, date etc.

Nej! Håller INTE med.

@ndersmetod är den klart bästa då man har mycket "gratis" om man i ett senare skede skull vilja göra en komponent av sin kod.

Ja! Håller med.

---
Pace startade en tråd, "Varför använda fld, tbl och myConn", som lite tydligare förklarar mitt resonemang.

Om du säger att du inte fattar vad x_subject är för något, då kontrar jag i all välmening med "är du trög?"

Man måste sätta gränsen nånstans och jag tycker det räcker med ett någorlunda tydligt namn. Är man dessutom konsekvent och använder samma tabellnamn i alla tabeller i samtliga projekt man producerar, vilket jag har gjort hittills, borde det finnas lite utrymme för egna tolkningar. Det kanske är dumt att göra så, men så har jag gjort i mina första tre år som webbprogrammerare.

Det arbetet jag gjorde för tre år sedan har jag stor nytta av idag.

Dessutom är i stort sätt alla tabellnamnen strängar. De som inte är det är antingen Integer, x_ID, eller Date, x_date, x_created, x_updated. Normalt sett framgår det av sammanhanget vilken typ en variabel är av. Gör det inte det så finns det förmodligen betydligt allvarligare fel i produktionen.

Man får endå utgå från att den som läser någon annans kod har en hjärna att tänka med. Det är i alla fall mitt utgångsläge! :-)

Medlem sedan juni 20019 024 inlägg
#16

Ah! Läckert! Här om dagen konstaterade jag att jag i en annan tråd tidigare diggade dina val av variabelnamn och precis som då känner jag stor sympati för namn som cfg_UsernameMaxLength. Jag kan iofs inte på rak arm fatta vad "cfg" betyder, kanske configfile eller liknande. Men det går inte att missuppfatta i alla fall! :-)

cfg_ lade jag till när jag upptäckte att jag blandade ihop variablerna. cfg_ står här för "config" och är således inställningar för ett forum. Och när man ser namnet cfg_UsernameMaxLength så vet man att det handlar om längden på använarnamnet, men också att det är huvudinställningen och att det är så långt de SKA vara. :)

Vi har diskuterat val av variabel namn och vi har liknande syn på temat.

Nja, jag tycker det är onödigt att skriva x_ före strängen. Det är i så fall bättre med strSubject eller liknande. Exempel:

x_cellular  = mySQL("x_cellular")

Hur vet man att x_cellular inte är heltal (dvs 070248553) istället för text (dvs "070-248553")?

Medlem sedan juli 20003 825 inlägg
#17

Usch... nu måste jag stå till svars för allt jag gör... :-)

Jag håller helt med dig, jag är själv inte överväldigande förtjust i mitt val av variabelnamn. Jag väntar med spänning tills den dagen någon kommer upp med avsevärt bättre förslag än mina, vilket jag dagsläget inte kategoriserar strSubject att vara.

x_ grejen myntade jag rätt tidigt och det är primärt att "skydda" mina namn mot reserverade uttryck. Det har bara hängt med... I brist på annat. Egentligen inte heller någon höjdarlösning. Många blir lite halvirriterade på detta val.

mySQL gillar jag verkligen inte eftersom det lätt förväxlas med en databasmjukvara med samma namn och det är rätt olyckligt, särskilt i PHP projekten.

I och med användandet av GetRows() försvinner detta namnet mer och mer så det håller på att lösa sig själv.

x_cellular - nej det framgår inte av koden om det är Int eller String. Däremot framgår det tydligt i den skrivna dokumentationen som följer med källkoden till varje projekt i ett vanligt Word dokument och jag uppmanar alla som sliter med min kod och mina variabelnamn att skriva ut och titta på.

Är det något man tycker framgår oklart är det bara att slänga en blick på pappret vid ens sida:

[users] - användare
x_ID	räknare
x_iconID	int
x_PW	15 tecken, extra säkerhet
x_user	användare
x_password	15 tecken
x_firstname	20
x_lastname	20
x_company	30
x_companyNR	20
x_email	50
x_street	50
x_zip	10
x_city	50
x_phone	30
x_directphone	30
x_cellular	30
x_fax	30
x_date	datum/tid
x_created	datum/tid
x_updated	datum/tid
x_lastVisit	datum
x_view	boolean
x_admin	boolean
x_staff	boolean
x_customer	boolean - leverantör
x_member	boolean - reklamsnubbe
x_confirm	boolean
Medlem sedan mars 20002 836 inlägg
#18

ska man följa "god programmerar sed" så ska man använda ungersk notation, dvs str som prefix för strängvariabler.
Som sagt, det är det allra bästa och helt klart MYCKET bättre än x_ som inte säger ett skit.

cya,
PatrikB

Medlem sedan juli 20003 825 inlägg
#19

OK... Jag har varit nere i gymmet och tänkt på saken och kommit fram till ungefär samma sak, mitt tillvägagångssätt hittils är värt att se över.

Det är bra att ha forumet att växla idéer med. Till min stora lycka är vi nu två på företaget som håller på med samma sak.

Hur som helst, vi ska ta tag i denna biten.

Jag ställer mig dock tveksam till om vi ska röra befintliga projekt eller om vi ska koncenterera oss på uteslutande nya projekt. En övergång till ett annat tillvägagångssätt skulle i så fall ta mellan ett och två år att genomföra. Över tre år är dock inte orealistiskt.

Det är helt klart en hypotetisk tidsrymd som jag i stora drag grundar på tidigare erfarenheter. Jag har gjort strategiska byten av mer övergripande karraktär tidigare och gamla grejer hänger med förvånansvärt och irriterande länge.

Medlem sedan mars 20002 836 inlägg
#20

jo, det är ju så .... gamla vanor är svåra att bryta ... fråga en rökare de vet ... :e

Men, nya projekt borde vara ett ypperligt tillfälle att "testa" en ny variabel namnsättning

cya,
PatrikB

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)