2015-03-16 2 views
1

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

В продолжение, если бы я был typedefing СТАНД :: строка быть что-то еще (в моем случае «мир»), я должен назвать ...

typedef std::string world; 

или

typedef std::string World; 

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

Спасибо!

Предыдущие исследования:

+0

Существует не один общий именования, а множество, так же, как с C++ существует не одна общая библиотека, которая предоставляет функциональность, как стандартные библиотеки Java и C#, а множество, огромное разнообразие. Проверьте библиотеку Boost, в ней есть описание ее условностей и обоснований. Стандартная библиотека - еще один источник соглашения, но одна проблема заключается в том, что наличие имен, которые выглядят как стандартные имена библиотек, не обязательно является преимуществом. –

+4

О, и * забудьте * руководство по стилю Google. Он был разработан для среды с множеством устаревших кодов стиля C. Отключенная от этой цели большая часть его советов является некачественной. –

+1

FWIW, это должно быть 'typedef std :: string world;' –

ответ

1

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

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

Во всяком случае, это должно быть:

typedef std::string World; 

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

using World = std::string; 
Смежные вопросы