Frage

Das MFC hat alle Klassennamen, die zum Beispiel CFile und CGdiObject mit C beginnen. Hat jemand gesehen, es an anderer Stelle verwendet? Gibt es eine offizielle Namenskonvention Führung von Microsoft, die diesen Stil empfiehlt? Hat die Idee mit MFC stammen oder war es ein anderes Projekt?

War es hilfreich?

Lösung

Etwas ein bisschen ähnlich ist in Symbian C ++ verwendet, wo die Konvention ist, dass:

T-Klassen sind "Werte", zum Beispiel Tchar, TInt32, TDes

R-Klassen sind Griffe Kernel (oder andere) Ressourcen, zum Beispiel RDATEI, RSocket

M Klassen sind Mixins, welche Schnittstellen (wie Mixins ohne Funktion Implementierungen ausgelegt) umfasst. Die Richtlinie ist, dass die Mehrfachvererbung höchstens 1 Nicht-M-Klasse beinhalten sollte.

C-Klassen sind so ziemlich alles andere, und leiten sich von CBase, die mit ressourcen Handhabung ein paar Sachen in ihm zu helfen hat.

HBufC besteht in erster Linie verwirren Beiträge auf Symbian-Foren zu generieren, und seinen ganz eigenen Präfix aufweist, ist nur der Anfang. Das H steht für „nicht wahr?“, Oder vielleicht „Haw, Haw! Sie haben keine STL!“ ; -)

Dies ist in der Nähe im Geiste Apps ungarischen Notation statt Systeme ungarische Notation. Das Präfix sagt etwas über die Klasse, die Sie in der Dokumentation nachschlagen können, aber die man sonst nicht kennen würde. Der ganze Sinn alles in der Programmierung der Namensgebung ist solche Hinweise und Erinnerungen zu schaffen , sonst würden Sie nur Ihre Klassen nennen „Class001“, „Class002“, etc.

System Ungarisch sagt Ihnen nur den Typ einer Variablen, die IMO nichts ist sehr zu begeistern, vor allem in einer Sprache wie C ++, wo Typen neigen dazu, entweder wiederholt werden ständig oder auch vollständig verdeckt durch Template-Parameter. Seine analogen wenn Typen Namensgebung der Praxis Java ist wieder alle Schnittstellen mit I. zu benennen, ich erhalten über diese nicht sehr aufgeregt (und auch nicht die Standard-Java-Bibliotheken), aber wenn Sie vorhaben, eine Schnittstelle für jede Klasse zu definieren, zusätzlich zu den Schnittstellen, die für Polymorphismus in nicht-Testsituationen tatsächlich verwendet werden, dann müssen Sie eine Möglichkeit, die beiden zu unterscheiden.

Andere Tipps

Es ist das Böse. Verwenden Sie ungarische Notation nicht für alles andere als abstrahierte Dinge.

Zum Beispiel btnSubmit ok ist eine Schaltfläche zum Senden genannt zu beschreiben (was würde ein begleitendes lblSubmit für das Label hat neben die Taste)

Aber Dinge wie CMyClass für Klasse und uiCount für unsigned integer namens count nicht helfen Programmierer und nur führt zu zusätzlicher verschwenderischer Typisierung.

Das war ein alter C ++ Programmierstil und MFC war wahrscheinlich eines der letzten Dinge, die es zu nutzen.

Es war in der Regel nur eine Konvention von C ++ (und vielleicht ein paar anderen Sprachen), und damit begann es in Ungnade fallen, wie die Sprachen mehr Interoperabilität wurden, durch COM und dann .NET.

Sie sehen es immer noch Vetter, das „I“ Präfix für Schnittstellen, ziemlich oft. Ich habe immer fand es interessant, dass „I“ überlebt, wenn „C“ gestorben, aber das war wahrscheinlich, weil Schnittstellen so stark genutzt wurde in COM-Interoperabilität.

Ich erinnere mich Borland Compiler kam mit Bibliotheken, in denen Klassennamen mit ‚T‘ gestartet. Wahrscheinlich für "Typ":)

Vor Jahren Namenskonvention ist von entscheidender Bedeutung, um Hilfe Identifizierung der Klasse, die Art der sogar der Klasse der Gruppierung. Vergessen Sie nicht, damals gab es keinen Namensraum und keine / begrenzte Intellisense zur Verfügung. C ist eine Form der ungarischen Notation, aber sicherlich populär durch MFC gemacht. Borland Delphi und wurde mit T - als Präfix für Typen

Während MFC und viele Software geschrieben für Windows das „C“ Konvention für Klassen verwendet, Sie in der Regel die letztere nicht in Software für UNIX-Plattformen geschrieben finden. Ich denke, es war eine Gewohnheit, sehr stark von Visual C ++ ermutigt. Ich erinnere mich, dass Visual C ++ 6.0 würde ein „C“ als Präfix zu allen Klassen, dass man mit den Klassen-Assistenten erstellt.

Ich kann nicht alle Ihre Fragen beantworten, aber soweit ich weiß, es ist nur die MFC-Klassen von anderen Klassen zu unterscheiden -. Eine Form der ungarischen Notation

Interessanterweise ist es scheinbar kontroverse nicht nur außerhalb MS, aber sowohl innerhalb als auch .

Sehen Sie hier: http://www.jelovic.com/articles/stupid_naming.htm für einen langen Artikel zu diesem Thema.

Eine solche Konventionen für Variablen sind nützlich für Sprachen wie Fortran, wo Sie brauchen nicht die Typen Ihrer Variablen zu deklarieren, bevor sie verwendet wird. Ich scheine, dass die Variablen zu erinnern, die mit „i“ oder „j“ Namen gestartet ist auf ganze Zahlen Verzug geraten, und Variablen, die Namen begann mit „r“ und anderen Buchstaben Verzug geraten zu real (float) Werte ist.

, die Menschen benutzen ähnlich für Sprachen, in denen Sie benötigen, um declare Variablen zu tun - oder für Klassendefinitionen - ist wahrscheinlich nur ein Überbleibsel aus jemandem die alten Code Konventionen von Sprachen wie Fortran Missverständnis, wo es eigentlich wichtig

.

Wenn Anwendungen zu schreiben, die die Qt-Bibliotheken verwenden, verwenden wir eine Namenskonvention, dass unterscheiden Klassen, die direkt oder indirekt aus QObject von Klassen abgeleitet werden, die nicht sind. Dies ist nützlich, weil Sie aus dem Klassennamen sagen kann, ob es unterstützt Signale / Slots, Eigenschaften und alle anderen guten Sachen, die von QObject kommen.

Wir verwenden es bei der Arbeit, wie viele andere Namenskonventionen

von vielen, die ich gemeint C für Klassen, p für Zeiger, m_ für Mitglieder, s_ für statische Elemente, n für integer ... nicht viele Dokumente

ich persönlich finde, dass die ungarische Notation hilft mir, dass ich auf einen Bildschirm voller Variablen aussehen können und wissen sofort, was sie sind, wie ich versuche, und absorbieren die Logik. Ihr einziges Argument gegen sie ich sehe, ist „extra Eingabe von“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top