Jak oznaczyć typy w programach C i C ++?


12

W tej mojej odpowiedzi użyłem _tna końcu typów, które w najlepszym razie zakończyły się kontrowersjami. Jest to praktyka, której używam w moich bieżących projektach.

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

Miało to być spójne z typami C z stddef.hpodobnych size_tlub ptrdiff_t. Jednak, zgodnie z niektórymi komentarzami w moich pytaniach, _tpostfiks wydaje się być zarezerwowany dla POSIX. Czego powinienem użyć zamiast _t? Czy powinienem nadal korzystać _t?

To pytanie dotyczy zarówno C, jak i C ++. Jeśli te języki mają inne konwencje, odpowiedz na nie.


2
Jedną z powszechnych konwencji jest posiadanie nazw klas, które wyglądają podobnie. W tym momencie nie potrzebujesz nawet sufiksów. (Jest to bardziej powszechne w Javie, .net itp. Ale działa również w C ++.)
cHao

1
ostatecznie jest to forma notacji węgierskiej. I ta dyskusja nie ma końca. Z jednej strony jestem temu przeciwny i opowiadam się za rozwiązaniem cHao. Dlaczego? Ponieważ korzystałem z notacji węgierskiej przez około 4 lata do wszystkiego, więc postanowiłem zrobić projekt bez niego i wcale jej nie przegapiłem. I nie marnowałem na to czasu. Więc całkowicie go porzuciłem, ponieważ najwyraźniej nie miał dla mnie żadnej wartości. I nigdy nie oglądałem się za siebie.
stijn

1
Zobacz to pytanie, aby uzyskać zastrzeżone identyfikatory (w tym _t) stackoverflow.com/a/228797/14065
Martin York,

Odpowiedzi:


16

W społecznościach C i C ++ nie ma zgody co do typów nazewnictwa.

Chociaż _tprzyrostek jest rzeczywiście zarezerwowany przez POSIX , niektórzy opowiadają się za użyciem tego _tprzyrostka również dla własnych typów, podczas gdy inni równie stanowczo twierdzą, że nie powinieneś kusić losu, ryzykując duplikaty nazw w POSIX.

Alternatywne konwencje nazewnictwa sugerują użycie przedrostka dla typów, takich jak Club T.


16

Uważam, że sufiksy są raczej brzydkie, więc unikaj _titd. Dobrą alternatywą jest użycie dużej litery do rozpoczęcia nazw typów, tak jak Pointw powyższym przykładzie.


3
i miło jest mieć styl RÓŻNY od standardowych typów C, więc czytając kod, możesz łatwo znaleźć to, co pochodzi z programu klienckiego i co to jest interfejs API
Nikko

1
Również moja ulubiona technika. Typy mają początkową wielką literę. Wszystkie inne identyfikatory nie są typami i dlatego łatwo je zobaczyć.
Martin York

Zawsze myślałem, że to też wygląda brzydko. Dobrze widzieć, że inni się ze mną zgadzają.
syb0rg

Używam PascalCase tylko do typów wskaźników (z powodu języków takich jak C # i Java, gdzie PascalCase oznacza klasę, tj. Odwołanie do danych), ale rozumiem skąd pochodzisz.
yyny

1

To zależy od Ciebie. O ile nie ma konfliktu z zastrzeżonymi słowami, dobrze jest iść. Zastanów się jednak nad scenariuszem, w którym pracujesz w firmie, a wiele osób uzyskuje dostęp do tej samej bazy kodu, a Twój kod dociera do osoby, która nie jest świadoma Twojego nawyku. Może wtedy założyć, że jest to typ zastrzeżony, szczególnie jeśli piszesz coś takiego jak point_t. Tak więc, bądź prostszy, np. Punkt jest prostszy niż point_t. A jeśli chcesz coś do niego dołączyć, dołącz swoje inicjały nazwisk.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.