/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Hvad er den dybere mening...
Fra : Thomas P


Dato : 16-05-01 13:02

Hej,

Jeg har tit undret mig over hvorfor man altid sætter et T foran records,
klasser og andet guf. Er det bare noget man har vedtaget for det praktiskes
skyld eller ligger der en dybere mening bag ved T ?

--
- Thomas
~~~~~~~~
.... http://www.FlowCode.f2s.com - where code flows
.... mailto:blomme@post.com - where email goes



 
 
Thomas Rose (16-05-2001)
Kommentar
Fra : Thomas Rose


Dato : 16-05-01 13:18

Hej Thomas,

det er såmænd ikke så mærkeligt endda... T'et står for "type" og betyder
således at du udfra din kode kan afgøre om noget er en type eller en instans
af en type... du ser f.eks. typisk variabel-deklarationer der ser ud som
følger:

var
StrList : TStringList;

Så vidt jeg ved er T-konventionen tiltænkt klasser (dvs. "typer" for
objekter)... men ikke f.eks. records; jeg bruger dog selv "T" foran alle
typer og klasser jeg selv definerer, da det hjælper mig med at overskue og
forstå min kode.

Du har en tilsvarende konvention med "I", der blot angiver et interface og
ikke en type. F.eks. "IDispatch" og "ISharedPropertyManager" (stammende fra
COM-verdenen).

Håber det bragte lidt forståelse over emnet...

Mvh.
Thomas R.

"Thomas P" <blomme@post.com> wrote in message
news:9dtq5i$ihc$1@news.inet.tele.dk...
> Hej,
>
> Jeg har tit undret mig over hvorfor man altid sætter et T foran records,
> klasser og andet guf. Er det bare noget man har vedtaget for det
praktiskes
> skyld eller ligger der en dybere mening bag ved T ?
>
> --
> - Thomas
> ~~~~~~~~
> ... http://www.FlowCode.f2s.com - where code flows
> ... mailto:blomme@post.com - where email goes
>
>



Christian Iversen (16-05-2001)
Kommentar
Fra : Christian Iversen


Dato : 16-05-01 13:44

> det er såmænd ikke så mærkeligt endda... T'et står for "type" og betyder
> således at du udfra din kode kan afgøre om noget er en type eller en
instans
> af en type... du ser f.eks. typisk variabel-deklarationer der ser ud som
> følger:
>
> var
> StrList : TStringList;
>

Korrekt.

> Så vidt jeg ved er T-konventionen tiltænkt klasser (dvs. "typer" for
> objekter)... men ikke f.eks. records;

Forkert.

T er tiltænkt alle typer, bortset fra de mest almindelige, "grundtyperne".
(Integer, Byte, Char, DWord, o.s.v). Således har både enumerates, sets,
records, classes, og objects, "T" foran navnet.

Af eksempler på records kan nævnes:

TPoint, TSize, TRect, o.s.v.

Records der stammer fra Windows API'en har oprindeligt ikke noget T, men har
fået det tilføjet i Delphi-header'erne. Eksempelvis hedder TPoint ikke
TPoint, men blot Point, oprindeligt.

> jeg bruger dog selv "T" foran alle typer og klasser jeg selv definerer,
> da det hjælper mig med at overskue og forstå min kode.

En glimragende praksis!

> Du har en tilsvarende konvention med "I", der blot angiver et interface og
> ikke en type. F.eks. "IDispatch" og "ISharedPropertyManager" (stammende
fra
> COM-verdenen).
>

Korrekt Igen.

> Håber det bragte lidt forståelse over emnet...

Håber det bragte lidt mere forståelse over emnet...

M.V.H, Christian Iversen
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
d- s a-- C++++ U P L E- W+++ N+++ o K- w++++ O! M-- V? PS++ PE++ Y+ PHP t+
5? X++++ R tv- b++ DI+++ D+ G++ e>+++++ h!
------END GEEK CODE BLOCK------



Thomas P (16-05-2001)
Kommentar
Fra : Thomas P


Dato : 16-05-01 14:37

Mange tak for jeres svar !

> > Håber det bragte lidt forståelse over emnet...
>
> Håber det bragte lidt mere forståelse over emnet...

....og jo - det bragte både lidt og lidt mere forståelse til min tankeknast


--
- Thomas
~~~~~~~~
.... http://www.FlowCode.f2s.com - where code flows
.... mailto:blomme@post.com - where email goes



Thomas Due (22-05-2001)
Kommentar
Fra : Thomas Due


Dato : 22-05-01 07:39

Hejsa,

Der er faktisk en del af disse konventioner når man begynder at kigge kode til VCL'en igennem.

F.eks. hedder alle attributter i en klasse noget med 'F' for field.
COM interfaces hedder noget med 'I'
Pointere f.eks.

PPegepind = ^TPegepind;
TPegepind = Record
....
End;

starter altid med 'P'.

Og endelig starter argumenter til operationer med A.
f.eks. procedure TKlasse.FoersteProc(const Ainput : String; var AOutput : Integer);

Der er tilfælde hvor disse konventioner ikke bliver overholdt, og de har da heller ingen praktisk
betydning ud over at gøre koden lettere at læse.

Mvh
Thomas

Af og til blive

"Thomas P" <blomme@post.com> wrote in message news:9dtvn7$4c9$1@news.inet.tele.dk...
> Mange tak for jeres svar !
>
> > > Håber det bragte lidt forståelse over emnet...
> >
> > Håber det bragte lidt mere forståelse over emnet...
>
> ...og jo - det bragte både lidt og lidt mere forståelse til min tankeknast
>
>
> --
> - Thomas
> ~~~~~~~~
> ... http://www.FlowCode.f2s.com - where code flows
> ... mailto:blomme@post.com - where email goes
>
>


Christian Iversen (24-05-2001)
Kommentar
Fra : Christian Iversen


Dato : 24-05-01 18:37

"Thomas Due" <noname@nowhere.net> wrote in message
news:9ed1e7$59u$1@news.inet.tele.dk...
> Hejsa,
>
> Der er faktisk en del af disse konventioner når man begynder at kigge kode
til VCL'en igennem.
>

Ganske korrekt!

> F.eks. hedder alle attributter i en klasse noget med 'F' for field.
> COM interfaces hedder noget med 'I'

Ikke ganske korrekt...

F er kun for de "private-declarations", hvor man har en public property, med
samme navn (uden F). Eksempel:

TFoo = Class(TBaz)
Private
FMyProperty : Boolean;
Protected
Public
MyProperty : Boolean Read FMyProperty Write FMyProperty;
Published
End;

Man kunne jo også vælge at bruge methods ved Read/Write, men det er sagen
uvedkommende.

> Pointere f.eks.
>
> PPegepind = ^TPegepind;
> TPegepind = Record
> ...
> End;
>
> starter altid med 'P'.
>

Ganske korrekt. (bortset fra de få specielle, indbyggede types)

> Og endelig starter argumenter til operationer med A.
> f.eks. procedure TKlasse.FoersteProc(const Ainput : String; var AOutput :
Integer);
>

Ikke ganske korrekt.

A-prefix bruges når et parameter ellers ville hedde det samme som en
property. Eksempel:

Constructor TMyClass.Create(AOwner : TComponent);
Begin
Inherited;
YadaYadaYada(Nil);
// Her er så forskel på Owner og AOwner
End;

> Der er tilfælde hvor disse konventioner ikke bliver overholdt, og de har
da heller ingen praktisk
> betydning ud over at gøre koden lettere at læse.
>

Ikke ganske korrekt.

Du skal bruge noget i stil med A-prefix, hvis du vil undgå at skrive
følgende, eller sligt:

Self.Owner := Owner;

--
Regards, Christian Iversen [FIDUSO]
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
d- s a-- C++++ U P L E- W+++ N+++ o K- w++++ O! M-- V? PS++ PE++ Y+ PGP t+
5? X++++ R tv- b++ DI+++ D+ G++ e>+++++ h!
------END GEEK CODE BLOCK------



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste