Как мне маркировать типы в программах на C и C ++?


12

В этом ответе я использовал _tв конце типы, которые в лучшем случае закончились противоречиво. Это практика, которую я использую в своих текущих проектах.

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

Предполагалось, что это будет соответствовать типам C из stddef.hlike size_tили ptrdiff_t. Однако, согласно некоторым комментариям в моих вопросах, _tpostfix зарезервирован для POSIX. Что я должен использовать вместо _t? Или я _tвсе равно должен продолжать использовать ?

Этот вопрос для C и C ++. Если у этих языков разные соглашения, смело отвечайте.


2
Одно общее соглашение - иметь имена классов LookLikeThis. На этом этапе вам даже не нужны суффиксы. (Это более распространено для Java, .net и т. Д. Но это также работает и в C ++.)
cHao

1
в конечном итоге это форма венгерской нотации. И эта дискуссия бесконечна. Я, например, против этого сейчас и пойти с решением cHao. Почему? Поскольку я использовал для венгерской нотации около 4 лет, то решил сделать проект без него и не пропустил его вообще. И не стал тратить на это время. Таким образом, я полностью отбросил его, поскольку он, по-видимому, не имел никакого значения для меня. И я никогда не оглядывался назад.
Стийн

1
См. Этот вопрос для зарезервированных идентификаторов (включая _t) stackoverflow.com/a/228797/14065
Мартин Йорк,

Ответы:


16

В сообществах C и C ++ нет единого мнения относительно типов именования.

Хотя _tсуффикс действительно зарезервирован POSIX , некоторые будут рекомендовать использовать _tсуффикс и для ваших собственных типов, в то время как другие также будут категорически утверждать, что вы не должны испытывать судьбу, рискуя дублирующимися именами с POSIX.

Альтернативные соглашения об именах предлагают использовать префикс для типов, таких как Cили T.


16

Я нахожу суффиксы довольно некрасивыми и поэтому избегаю их _t. Хорошей альтернативой является использование заглавной буквы для начала имен типов, как Pointв вашем примере выше.


3
и мне приятно иметь стиль, ОТЛИЧАЮЩИЙСЯ от стандартных типов C, поэтому, читая код, вы легко можете найти то, что из клиентской программы и каков API
Nikko

1
Также моя любимая техника. Типы имеют начальную заглавную букву. Все остальные идентификаторы не являются типами и поэтому легко видны.
Мартин Йорк

Я всегда думал, что это выглядело довольно уродливо. Приятно видеть, что другие согласны со мной.
syb0rg

Я использую PascalCase только для типов указателей (из-за таких языков, как C # и Java, где PascalCase означает класс, то есть ссылку на данные), но я понимаю, откуда вы пришли.
yyny

1

Это зависит от тебя. Если нет конфликта с зарезервированными словами, вы готовы идти. Однако рассмотрим сценарий, когда вы работаете в компании, и несколько человек получают доступ к одной и той же кодовой базе, и ваш код попадает к человеку, который не знает о вашей привычке. Затем он / она может предположить, что это зарезервированный тип, особенно если ты пишешь что-то вроде point_t. Так что держите это проще, например, точка проще, чем point_t. И если вы хотите что-то добавить к нему, добавьте свои инициалы имени.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.