2009-07-16 6 views
9

Also gehe ich nach diesem Delphi Benennungsschema von Argumenten mit A beginnen, beginnen Klasse Vars mit F und lokale Vars mit M beginnen. Hat das Schema einen Namen? Ich sehe es oft in der Delphi-Quelle. Ich würde gerne mehr darüber lesen, aber ich bin mir nicht sicher, wie es heißt.Hat meine Namenskonvention einen Namen?

+5

Die Benennung globaler Variablen mit 'F' erfordert Verwirrung. 'F' ist die Konvention für Feldnamen, nicht für globale Namen. –

+0

Richtig, ich meinte Klassenvariablen, ich benutze fast nie Globals, also nannte ich sie nur das Falsche. –

+2

Woher habe ich M? –

Antwort

18

Diese Codierung Stil ist speziell in der Object Pascal Style Guide als nicht sein ungarische Notation (mit einer Ausnahme, enumerated types.) Rief

Die spezifischen Kodierungskonventionen über Sie sprechen keinen Namen haben als solche Soweit ich weiß, schreiben Sie einfach Code, der dem Codegestaltungsstil CodeGear (alt Borland) entspricht. Der Guide scheint dem Stil keinen Namen zu geben.

Der Grund, warum Sie es in der Delphi-Quelle oft sehen, ist, dass dieses Handbuch auf dem Codierungsstil basiert, den das Delphi-Team entwickelt hat!

Dieses Dokument ist lesenswert - nicht nur für Code-Richtlinien, sondern auch für andere Dinge, die es erwähnt.

+0

WTF? Warum wurde das abgelehnt? Diese IMO ist die beste Antwort, sie ist sicherlich die korrekteste. Tatsächlich entfernte ich meine Antwort, weil diese besser ist. –

+0

heh heh, sie müssen wirklich Charlie Calverts alte Borland-E-Mail-Adresse aus diesem Dokument entfernen. Charlie arbeitet jetzt für Microsoft. –

+1

Obwohl die Antwort eine gute Antwort ist (und ich sie aufwertete), um den Verweis darauf zu geben, woher der Stil kommt, hat das Dokument, wie ich es gelesen habe, es ungarische Notation nennen, wenn es sagt: "Die Ausnahme von der ungarischen Notation Regel ist in aufgezählten Typen. " die reguläre F-Konvention ist eine ungarische Notation. – Yishai

7

Im Allgemeinen klingt das wie Ungarische Notation - aber das spezifiziert nicht die A-, F- oder M-Konvention, genauer gesagt, nur das Voranstellen von Typinformationen in den Namen.

+0

Ich dachte, dass ungarischer put Typ und Inhalt Informationen dort - wie piVar wenn var ist ein Zeiger auf ein int und auch eine Reihe von Werten zu verwenden. Ich meine, ich dachte, es wäre spezifischer als nur "Vorsilben", aber ich könnte falsch liegen. –

+2

Die ungarische Notation kann auf verschiedene Arten erfolgen, aber als allgemeine Regel wird die sprachspezifische Information im Variablennamen als ungarische Notation bezeichnet. Joel argumentiert bekanntermaßen, dass es anders verwendet werden sollte, aber unabhängig davon, wie es "sein sollte", nennen die Leute es so. http://www.joelonsoftware.com/articles/Wrong.html – Yishai

+0

Dann wieder, Delphi Typ-System macht die Probleme, Joels "gute Ungarisch" löst veraltet. Wenn Sie einen speziellen Integer- oder String-Typ wünschen, der nicht mit normalen Ganzzahlen oder Strings zuordnungsfähig ist, können Sie einen Typ mit dem Schlüsselwort type in der Typdefinition deklarieren, damit der Compiler diese Fehler für Sie abfängt. –

10

Ihr Schema kann als eine Form von Hungarian notations (HN) betrachtet werden. In der Regel wird verwendet, um die HN type eine Variablen zu bedeuten, sondern als Wikipedia stellt fest,

Die Notation wird manchmal verlängert in C++ umfasst die scope ein variable, durch einen Unterstrich getrennt. Diese Erweiterung wird häufig auch ohne die ungarischen Typ-Spezifikation verwendet: [..]

10

würde ich sagen, dass Ihre Namenskonvention nicht wirklich die ungarische Notation übereinstimmen, aber es neigt dazu, ein wenig näher zu sein die ursprüngliche ungarische Notation, erfunden von Charles Simonyi, die als Apps Hungarian bekannt wurde. Aber nicht ganz.

Es gibt zwei Arten von ungarischer Notation:

  • Apps ungarische - die Idee war, Identifikatoren Namen zu schmücken, basierend auf den semantischen Informationen von dem, was sie zu speichern, so dass im Grunde der Zweck der Variablen:
 
    rwElement - variable represents a row ("rw") 
    colElement - variable represents a columns ("col") 
  • Sy Stengel ungarisch - das Präfix kodiert den eigentlichen Datentyp der Variablen.
 
    szName - variable is a zero-terminated string ("sz") 
    lAccount - variable is a long integer ("l") 

So, während Sie Namenskonvention hat in gewisser Weise eine Art Zweck darstellen, es ist nicht wirklich das Ziel, dass Apps ungarische bezeichnet.

+2

Er verwendet eine Form von Ungarisch, die den Umfang angibt. Ich würde nicht sagen, dass das näher am Zweck als am Datentyp ist. –

+0

Mein Grundgedanke war, dass es nicht in der Nähe eines Datentyps ist, aber Umfang beim Entwerfen der App hat einen Zweck. Es ist natürlich nicht der gleiche Zweck, aber von den beiden ist es näher, für einen Zweck so zu sein. –

7

Dein ist in der allgemeinen Klasse der Namenskonventionen bekannt als ungarische Notation (in der vielleicht breiter als üblich Sinn, dass der Name einen Präfix hat die Variable beschreibt), aber nein, Ihre Konvention hat keine spezifischerer Name.

Ich habe nie zuvor Ihre spezielle Präfixwahl getroffen. Der nächstgelegene ich gesehen habe, ist das, was ich mir vorstellen, wie die Indy Konvention, die A für Argumente verwendet, F für Felder, G für Globals, L für Einheimische und natürlich die üblichen I für Schnittstellen und T für Datensätze und Klassen. Eigenschaften und Subroutinen erhalten kein Präfix.

+0

Hast du diesen Namen einfach aus der Korrelation zwischen Delphi RTL und Indy Source abgeleitet oder hat Borland Programmer diese Sachen in den frühen Tagen von Delphi wirklich von Indy-Leuten gekauft? Ich habe keine Quelle früher als Delphi 7, so kann ich keinen Unterschied sehen. –

+0

Die Präfixe "F", "I" und "T" werden nahezu universell verwendet, und das Präfix "A" ist sehr gebräuchlich. Die Verwendung von Präfixen auf Globalen und Einheimischen ist etwas, was ich am meisten mit Indy verbinde; Ich kenne keine "G" oder "L" Präfixe im Borland-Code. –

Verwandte Themen