Avatar billede brobaek Nybegynder
02. oktober 2002 - 11:44 Der er 12 kommentarer og
1 løsning

Opstilling af koden

Jeg er netop igang med at læse en VB bog, hvor forfatteren i indledningen skriver, at han vil følge "gængse" standarder i VB.

Men der er en ting der undrer mig. Han skriver eks. koden således :

Privat Sub Form_Activate()

With Data1.Recordset
  .MoveLast
  lTotalRecords = .RecordCount
  .MoveFirst
End With

End Sub

Er standarden ikke, at der i koden i en procedure skal anvendes indrykning (tab), således at With/ End With burde være rykket ind (og naturligvis indholden af With).

Jeg ved det er en smagssag, men hvad er "standard" ?

Mvh
Martin
Avatar billede puppetmaster Nybegynder
02. oktober 2002 - 11:47 #1
Jeg er ikke sikker på hvad standard er, men nej, normalt ville man ikke indrykke en "level 0" procedure....
Avatar billede martin_moth Mester
02. oktober 2002 - 11:57 #2
Jo, jeg ville skrive

Privat Sub Form_Activate()

  With Data1.Recordset
    .MoveLast
    lTotalRecords = .RecordCount
    .MoveFirst
  End With

End Sub

Det gør det nemmere at skelne de forskellige Sub'er og Functioner fra hinanden, synes jeg. Men sådan er vi vel så forskellige - jeg tror næppe der er nogen officiel standard. Bare du selv holder styr på, at "If" og "End If" osv. osv. står under hinanden med samme indrykning - det gør livet meget lettere :o)
Avatar billede tubber Juniormester
02. oktober 2002 - 11:59 #3
Der er nogle "standarder", men jeg vil ikke mene du bør bruge dem hvis det for dig ikke gør koden mere overskuelig.

Jeg har lavet mit eget lille system, det vil sige udbygget et lidt.
F.eks. grundreglen i navngivning af variabler er det skal være sigende og fortælle hvilken variabel det er.
Der gør jeg det hvis jeg skal bruge en variabel der hedder navn så kalder jeg den for varNavn.....
Så ved jeg det er en variabel fordi der står var foran, hvor imod stod der comNavn ved jeg det refererer til en combobox.
Grunden til jeg startede på at gøre det sådan var ikke for at gøre det nemmere, men jeg sad og arbejde med noget sql og der skulle jeg bruge et recordset der hed "By" men by er resseveret i sql og mener også det er i vb.....så det kunne jeg ikke bruge :O)

Så lav dine egne systemer så det bliver lettest for dig, men stadig så overskueligt at en anden ville kunne forstå din kode og nemt vil kunne overtage :O)

/Tubber
Avatar billede moses Praktikant
02. oktober 2002 - 12:12 #4
Jeg indrykker inde i hver "indpakning". Da "Private Sub..." er en indpakning ...

PRIVATE SUB()
  WITH
    IF x=0 THEN
      o=7
    ELSE
      o=8
    ENDIF
  END WITH
END SUB
Avatar billede tubber Juniormester
02. oktober 2002 - 12:14 #5
Samme her :O)
Det gør det efter min mening overskueligt, og det må jo siges at det er det der er pointen :O)
Avatar billede martin_moth Mester
02. oktober 2002 - 12:15 #6
Det der med variabler - jeg synes det er meget nyttigt, at anvende variablens type som en del af variablens navn:

strFornavn = "Martin"  'String (str)
intAlder = 27          'Integer (int)
blnRyger = False        'Boolean (bln)
osv.

Mht. komponentnavne gør jeg også som tubber, txtFornavn er en TextBox der indeholder et fornavn, lblForfatter er en label der viser en forfatter osv.

Når du når til objektorienteret programmering bruger jeg også m_ og v_ som prefiks på variabelnavne, for at angive om de er member-vbariable eller ej, f.eks. m_intAlder = 27...

Opfind bare dine egne regler, bare du er konsekvent :o)
Avatar billede moses Praktikant
02. oktober 2002 - 12:21 #7
Jeg forsøger at lave min kode i "PROSA" - Det vil sige - Så læsbart, som muligt for ikke IT kendte.

IF ProgramIsUnlocked THEN
  SkipTheAddIntro = True
  LogonOk = GetTheUsersLogonData
ELSE
  SkipTheAddIntro = False
  LogonOk = False
ENDIF
Avatar billede moses Praktikant
02. oktober 2002 - 12:24 #8
Det ville forstyrre læsbarheden for mig, hvis jeg skulle skrive:

IF boolUnlocked THEN
  boolSkipIntro = True
  boolLogonOk = funcGetTheUsersLogonData
ELSE
  boolSkipIntro = False
  boolLogonOk = False
ENDIF
Avatar billede martin_moth Mester
02. oktober 2002 - 12:55 #9
moses > Nå ja - sådan er der for og imod. Det jeg forsøger at fortale for er, at du bare propper et prefix på 3 bogstaver foran dine variabelnavne:

IF blnProgramIsUnlocked THEN
  blnSkipTheAddIntro = True
  blnLogonOk = GetTheUsersLogonData
ELSE
  blnSkipTheAddIntro = False
  blnLogonOk = False
ENDIF

I ovenstående kan du stadig "læse" din kode, og du er tilmed ikke i tvivl om hvilken type din variabel er ;o)

Det er i øvrigt ikke en selvopfundet ide, men nappet fra Peter Writghs bøger om VB...Det er lidt af en smagssag, men jeg synes der er så mange argumenter for at bruge et sådane prefiks, at jeg konsekvent gør det....

Men vi er vist efterhånden ved at køre lidt af sporet, i forhold til det oprindelige spørgsmål :o)

PS - Hvorfor skulle ikke IT-kendte læse kildekoden til et program (gæk gæk)
Avatar billede tubber Juniormester
02. oktober 2002 - 13:43 #10
Jeg kan godt gølge det der med Str og Int.....men er der er mere end bare variabler der kan være Streng og Integer osv. Derfor har jeg valgt ikke at bruge dem, men igen det er jo så min måde :O)

Ok - vidste ikke der var en der havde skrevet en bog om at gøre det på den måde som sagt startede jeg på det fordi jeg ikke kune bruge en variabel der hed by, men det var det ord der beskrev min variabel...

/Tubber
Avatar billede brobaek Nybegynder
02. oktober 2002 - 14:23 #11
Den metode som Wright bruger er vist kaldt Hungarian Notation: http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q173738&

Der er vist ikke meget tvivl om, at dette er den mest anvendte metode og lettest læselige.

Moses, hvis læseren af din kode ikke engang kender til variabler tror jeg næppe din metode gør koden meget lettere forståelig...

Derimod giver Hungarian Notation en standard, som gør du kan kigge på andres kode og forstå om det er en variabel, en control eller en konstant etc.

Men Hungarian Notation indeholder ikke "regler" for opstilling af kode.

Tilbage til mit sp.:
Jeg er enig med Martin_Moth som skriver, at det gør i koden er lettere at skælne subs fra hinanden ved at indrykke koden (derfor har jeg også hidtil anvendt denne notation).

Men, er der ingen "standard" på dette område - evt. noget som kan stjæles fra C ?
Avatar billede martin_moth Mester
02. oktober 2002 - 14:31 #12
Jamen, det ser ud til at du ved mere om det end mig ;o) Godt link, kendte det ikke. Over and out!
Avatar billede brobaek Nybegynder
14. oktober 2002 - 12:17 #13
Lukker sp. da der ikke har været nogle fyldestgørende svar...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester