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.