Соглашения об именах C++

Мне было интересно узнать о соглашениях об именах в С++, особенно о том, где и что пишется с заглавной буквы. Я думаю, что я спрашиваю (исходя из таких языков, как Java и C#), почему такие вещи, как std::vector и std::string, не пишутся с заглавной буквы?

В качестве продолжения, если бы я определял тип std::string как нечто другое (в моем случае «мир»), должен ли я называть это...

 typedef std::string world;

or

 typedef std::string World;

Я просмотрел предыдущие сообщения и руководства по стилю (некоторые из них перечислены ниже), но ни один из них, похоже, не касался этого напрямую (ссылки ниже). В руководстве Google сказано: «Имена всех типов — классов, структур, определений типов и перечислений — имеют одинаковое соглашение об именовании. Имена типов должны начинаться с заглавной буквы и иметь заглавную букву для каждого нового слова. Никаких символов подчеркивания». Таким образом, кажется, что это должно быть последнее, но это кажется странным, поскольку библиотека std даже немного не следует этому соглашению. Это просто одна из тех вещей, когда группа людей написала библиотеку std до того, как стили были стандартизированы, и теперь (из соображений совместимости) уже слишком поздно менять/обновлять ее?

Спасибо!

Прошлое исследование:


person fish    schedule 16.03.2015    source источник
comment
Не существует единого общего соглашения об именах, а их множество, как и в случае с C++, не существует единой общей библиотеки, обеспечивающей функциональность, подобную стандартным библиотекам Java и C#, а скорее множество, крайнее разнообразие. Проверьте библиотеку Boost, в ней есть описание ее соглашений и обоснований. Стандартная библиотека — еще один источник соглашения, но одна проблема заключается в том, что наличие имен, похожих на имена стандартных библиотек, не обязательно является преимуществом.   -  person Cheers and hth. - Alf    schedule 16.03.2015
comment
Да, и забудьте руководство по стилю Google. Он был разработан для среды с большим количеством устаревшего кода в стиле C. В отрыве от этой цели большая часть его советов не годится.   -  person Cheers and hth. - Alf    schedule 16.03.2015
comment
FWIW, это должно быть typedef std::string world;   -  person R Sahu    schedule 16.03.2015
comment
мое имя существительноеКонвенция ИЗМЕНЯЕТСЯ Ежедневно.   -  person Neil Kirk    schedule 16.03.2015
comment
Вы получите столько ответов, сколько программистов. Я думаю, что типы, которые являются фундаментальными, всеобъемлющими и не зависят от приложения, например, std::string, написанные в нижнем регистре, создают ощущение, что они встроены. Таким образом, std::string или std::set ощущаются частью языка, как int или double. Я использую заглавные буквы только для объектов, которые содержат больше бизнес-логики, специфичной для приложения. Как CustomerManager. Я избегаю использования заглавных букв в функциях-членах, что кажется обычным в системах типа Linux.   -  person Galik    schedule 16.03.2015
comment
Спасибо ребята! (Я также обновил свой пост, чтобы поставить typedef в правильном порядке... упс).   -  person fish    schedule 20.03.2015


Ответы (2)


Стандартного стиля нет. Просто будьте последовательны.

Однако принято начинать пользовательские типы именно с заглавной буквы, чтобы их нельзя спутать со встроенными типами или типами из стандартной библиотеки.

В любом случае должно быть:

typedef std::string World;

Или в С++ 11 вы можете написать:

using World = std::string;
person Chris Drew    schedule 16.03.2015
comment
Так паскаль случаем? - person Xbox One; 22.09.2020

Я чувствую, что эта ссылка на аналогичный вопрос поможет вам:

Каковы предпочтительные соглашения об именах за день для С++?

И, как уже упоминалось большинством других, важно сделать две вещи:

  • выбрать стиль
  • придерживаться
person Kenneth Kao    schedule 16.03.2015