Wie soll ich Typen in C- und C ++ - Programmen markieren?

12

In meiner Antwort habe ich _tam Ende Typen verwendet, die bestenfalls umstritten endeten. Dies ist die Praxis, die ich in meinen aktuellen Projekten verwende.

typedef struct {
    int x;
    int y;
} point_t;

Dies sollte mit C-Typen von stddef.hlike size_toder konsistent sein ptrdiff_t. Nach einigen Kommentaren in meinen Fragen _tscheint Postfix jedoch für POSIX reserviert zu sein. Was soll ich stattdessen verwenden _t? Oder soll ich _ttrotzdem weiterverwenden?

Diese Frage gilt sowohl für C als auch für C ++. Wenn diese Sprachen unterschiedliche Konventionen haben, können Sie diese gerne beantworten.

Konrad Borowski
quelle
2
Eine übliche Konvention ist, Klassennamen zu haben, die LookLikeThis entsprechen. Zu diesem Zeitpunkt benötigen Sie nicht einmal Suffixe. (Dies ist häufiger für Java, .net usw., funktioniert aber auch in C ++.)
cHao
1
Letztendlich ist dies eine Form der ungarischen Notation. Und diese Diskussion ist endlos. Ich jedenfalls bin jetzt dagegen und gehe mit cHaos Lösung. Warum? Weil ich Ungarische Notation für ungefähr 4 Jahre für alles verwendet habe, habe ich mich dann entschieden, ein Projekt ohne es zu machen und habe es überhaupt nicht verpasst. Und habe keine Zeit damit verschwendet. Also ließ ich es komplett fallen, da es für mich anscheinend überhaupt keinen Wert hatte. Und ich habe nie zurückgeschaut.
Samstag,
1
Siehe diese Frage für reservierte Bezeichner (einschließlich _t) stackoverflow.com/a/228797/14065
Martin York

Antworten:

16

Innerhalb der C- und C ++ - Community besteht kein Konsens hinsichtlich der Benennungstypen.

Obwohl das _tSuffix in der Tat ist von POSIX reserviert wird , werden einige befürworten, das _tSuffix auch für Ihre eigenen Typen zu verwenden, während andere ebenso entschieden argumentieren, dass Sie das Schicksal nicht versuchen sollten, indem Sie doppelte Namen mit POSIX riskieren.

Alternative Namenskonventionen empfehlen die Verwendung eines Präfixes für Typen wie Coder T.

Bart van Ingen Schenau
quelle
16

Ich finde Suffixe ziemlich hässlich und vermeide sie daher _tusw. Eine gute Alternative ist die Verwendung eines Großbuchstabens, um Typnamen zu beginnen, wie Pointin Ihrem obigen Beispiel.

William Morris
quelle
3
und ich finde es schön, einen Stil zu haben, der sich von den Standard-C-Typen unterscheidet. Wenn Sie also den Code lesen, können Sie leicht herausfinden, was aus dem Client-Programm und was die API ist
Nikko
1
Auch meine Lieblingstechnik. Typen haben einen Anfangsbuchstaben in Großbuchstaben. Alle anderen Bezeichner sind keine Typen und daher leicht zu erkennen.
Martin York
Ich fand es immer auch ziemlich hässlich. Gut zu sehen, dass andere mir zustimmen.
syb0rg
Ich benutze PascalCase nur für Zeigertypen (aufgrund von Sprachen wie C # und Java, in denen PascalCase Klasse bedeutet, dh Verweis auf Daten), aber ich verstehe, woher Sie kommen.
YoYoYonnY
1

Es hängt von dir ab. Es sei denn, es liegt ein Konflikt mit den reservierten Wörtern vor. Stellen Sie sich jedoch ein Szenario vor, in dem Sie in einem Unternehmen arbeiten und mehrere Personen auf dieselbe Codebasis zugreifen und Ihr Code an eine Person weitergeleitet wird, die sich Ihrer Gewohnheit nicht bewusst ist. Er kann dann davon ausgehen, dass es sich um einen reservierten Typ handelt, insbesondere wenn Sie schreiben so etwas wie point_t. Halten Sie es also einfacher, z. B. ist point einfacher als point_t. Und wenn Sie etwas anhängen möchten, hängen Sie die Initialen an.

Kamran
quelle