Klassennamen, die mit C beginnen

7

Die MFC hat alle Klassennamen, die mit C beginnen. ZB CFile und CGdiObject. Hat jemand es anderswo benutzt gesehen? Gibt es ein offizielles Benennungskonvention Handbuch von Microsoft, das diesen Stil empfiehlt? Ist die Idee mit MFC entstanden oder war es ein anderes Projekt?

    
User1 18.02.2010, 21:51
quelle

11 Antworten

12

Etwas ähnliches wird in Symbian C ++ verwendet, wo die Konvention lautet:

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

R-Klassen sind Handles für Kernel (oder andere) Ressourcen, zum Beispiel RFile, RSocket

M Klassen sind Mixins, die Interfaces enthalten (die als Mixins ohne Funktionsimplementierungen interpretiert werden). Die Richtlinie besagt, dass die Mehrfachvererbung höchstens 1 Nicht-M-Klasse umfassen sollte.

C-Klassen sind so ziemlich alles andere und stammen von CBase ab, die einiges an Ressourcen enthält, um den Umgang mit Ressourcen zu erleichtern.

HBufC existiert hauptsächlich, um verwirrte Beiträge in Symbian-Foren zu generieren, und sein eigenes Präfix ist nur der Anfang. Das H steht für "huh?", Oder möglicherweise "Haw, haw! Du hast keine STL!" ; -)

Dies entspricht eher der Ungarischen Notation von Apps als der Ungarischen Notation von Systemen. Das Präfix sagt etwas über die Klasse aus, die Sie in der Dokumentation nachschlagen könnten, von der Sie aber nichts wissen würden. Der Hauptpunkt der Benennung von Dingen in der Programmierung ist, solche Hinweise und Erinnerungen zu geben , andernfalls würden Sie einfach Ihre Klassen "Class001", "Class002", etc. nennen.

Systems Ungarisch sagt Ihnen nur den Typ einer Variablen, worüber IMO nichts besonders aufregend ist, besonders in einer Sprache wie C ++, wo Typen entweder ständig wiederholt oder durch Template-Parameter komplett verdeckt werden. Sein Analogon bei der Benennung von Typen ist die Java-Praxis, alle Schnittstellen mit I zu benennen. Auch hier bin ich nicht besonders begeistert (und auch nicht die Standard-Java-Bibliotheken), sondern wenn Sie für jede Klasse eine Schnittstelle definieren , zusätzlich zu den Schnittstellen, die tatsächlich für Polymorphie in Nicht-Test-Situationen verwendet werden, dann brauchen Sie eine Möglichkeit, die beiden zu unterscheiden.

    
Steve Jessop 19.02.2010, 00:47
quelle
16

Es ist böse. Verwenden Sie keine ungarische Notation für alles andere als abstrahierte Dinge.

Zum Beispiel ist btnSubmit in Ordnung, um eine Schaltfläche mit dem Namen "Submit" zu beschreiben (mit einem lblSubmit für die Beschriftung neben der Schaltfläche)

Aber Dinge wie CMyClass für Class und uiCount für unsigned Integer namens count helfen Programmierern nicht und führen nur zu extra verschwenderischem Tippen.

    
Earlz 18.02.2010 22:00
quelle
9

Das war ein alter C ++ - Codierungsstil und MFC war wahrscheinlich eines der letzten Dinge, die es brauchten.

Es war normalerweise nur eine Konvention von C ++ (und vielleicht ein paar andere Sprachen) und daher begann es in Ungnade zu fallen, als die Sprachen durch COM und dann .NET interoperabler wurden.

Sie sehen immer noch, es ist Cousin, das "Ich" Präfix für Schnittstellen, ziemlich oft. Ich fand es immer interessant, dass "ich" überlebte, als "C" starb, aber das lag wahrscheinlich daran, dass Schnittstellen in der COM-Interoperabilität so stark genutzt wurden.

    
Mike Mooney 18.02.2010 21:56
quelle
4

Vor Jahren ist die Benennungskonvention entscheidend, um die Klasse, den Typ selbst der Gruppierung der Klasse zu identifizieren. Vergessen Sie nicht, damals gab es keinen Namensraum und keine / begrenzte Intellisense verfügbar. C ist eine Form der ungarischen Notation, wurde aber sicherlich von MFC populär gemacht. Borland und Delphi verwendeten T - als Präfix für Typ

    
Fadrian Sudaman 19.02.2010 00:58
quelle
4

Ich erinnere mich, dass Borland-Compiler mit Bibliotheken kamen, in denen Klassennamen mit "T" begannen. Wahrscheinlich für "type":)

    
Nemanja Trifunovic 19.02.2010 02:52
quelle
3

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

Interessanterweise ist es nicht nur außerhalb von MS, sondern auch innerhalb von umstritten >.

    
mwigdahl 18.02.2010 21:56
quelle
3

Während MFC und viele für Windows geschriebene Software die "C" -Konvention für Klassen verwenden, finden Sie diese in der Regel nicht in Software, die für UNIX-Plattformen geschrieben wurde. Ich denke, es war eine Gewohnheit, die von Visual C ++ sehr stark gefördert wurde. Ich erinnere mich, dass Visual C ++ 6.0 allen Klassen, die mit dem Klassenassistenten erstellt wurden, ein "C" voranstellte.

    
Dr. Watson 19.02.2010 03:12
quelle
2

Siehe hier: Ссылка für einen langen Artikel zu diesem Thema.

    
Roel 19.02.2010 12:24
quelle
0

Solche Konventionen für Variablen sind nützlich für Sprachen wie Fortran, wo Sie die Typen Ihrer Variablen nicht deklarieren müssen, bevor Sie sie verwenden. Ich erinnere mich, dass Variablen, deren Namen mit "i" oder "j" beginnen, standardmäßig auf ganze Zahlen und Variablen, deren Namen mit "r" beginnen, und andere Buchstaben auf reale (float) Werte gesetzt wurden.

Dass Menschen ähnliche Sprachen für Sprachen verwenden, in denen Sie Variablen deklarieren müssen - oder für Klassendefinitionen - ist wahrscheinlich nur ein Relikt von jemandem, der die alten Code-Konventionen von Sprachen wie Fortran missversteht, wo es wirklich darauf ankam.

    
rmxz 17.09.2010 17:04
quelle
0

Beim Schreiben von Anwendungen, die die Qt-Bibliotheken verwenden, verwenden wir eine Benennungskonvention, die Klassen, die direkt oder indirekt von QObject abgeleitet sind, von Klassen unterscheidet, die dies nicht tun. Dies ist nützlich, weil Sie anhand des Klassennamens erkennen können, ob Signale / Slots, Eigenschaften und alle anderen Goodies von QObject unterstützt werden.

    
Rasmus Storjohann 14.08.2011 06:08
quelle
0

Wir verwenden es wie viele andere Namenskonventionen bei der Arbeit

von vielen Ich meinte C für Klassen, p für Zeiger, m_ für Mitglieder, s_ für statische Mitglieder, n für Integer ... nicht viele Dokumente

    
f4. 18.02.2010 21:55
quelle