Почему никто не использует соглашения об именах STL?

Лоты С++ проекты используют какое-то соглашение об именах верблюдов. Единственный проект, использующий соглашения об именах STL, по-видимому, увеличивается (там, где делается много прототипов для STL). Я знаю, что есть проекты, которые предшествуют STL, но также и большинство новых кодовых оснований (которые используют STL) с соглашением об именах верблюдов.

Итак, мои вопросы:

  • Почему никто не использует соглашения об именах STL?
  • Вы бы рекомендовали использовать соглашение об именах STL для верблюжьего корпуса для нового проекта?
  • Я видел, что некоторые проекты используют соглашения об именах STL для некоторых классов типа STL (limited_stack, simplify_type) и случай верблюда для всего остального. Это похоже на хороший подход к отдельной инфраструктуре из кода приложения. Вы порекомендовали бы это сделать?

(Я знаю, что соглашения об именах обсуждались до смерти. Тем не менее, я думаю, что на этот вопрос еще не был дан ответ. Особенно идея разделения соглашений об именах, на мой взгляд, стоит обсудить.)

Ответ 1

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

Соглашение - это просто: соглашение. Не имеет значения, какой из них вы используете, а скорее читаете и удобны для ввода типов для вас и программистов, которым требуется поддерживать код, с которым вы работаете в данный момент.

Я использую CamelCase на С++, потому что он более визуально приятен для моего глаза и потому, что я просто привык к нему. С другой стороны, я использую символы подчеркивания и строчные имена в C - это становится своего рода простым способом определить, какой язык был использован для меня.

Другие программисты, безусловно, дадут вам другие причины: большинство из них будут более или менее субъективными, истинными для них или тем, в которых они являются членами.

Посмотрите на другие языки. С# поддерживает CamelCase, с первой буквой заглавной. Почему это лучше, чем оставить первый нижний регистр?

PHP-программисты, которые используют фреймворк Zend, также знакомы с соглашениями об именах Zend: http://framework.zend.com/manual/en/coding-standard.naming-conventions.html.

API-интерфейс Drupal также является PHP, но использует символы подчеркивания, строчные буквы и префиксы для модулей/тем.

Библиотеки, фреймворки и даже целые языки могут иметь соглашения об именах, которые по какой-то причине предпочитают их создатели. Это не заставляет вас отказаться от использования обычного соглашения об именах:). Итак, в целом, я думаю, что ответ на ваш вопрос может быть настолько глупым: просто потому, что: D. Потому что отдельные программисты чувствуют себя комфортно с ним.

Что касается второго вопроса: нет, я бы не рекомендовал использовать какое-либо соглашение над другим для любого проекта. Выберите лучшее для вас. Единственная ситуация, когда у вас нет выбора, - это когда вы работаете в команде разработчиков, которая по какой-то причине хочет придерживаться единого соглашения (например, согласованного API).

Третий вопрос: да, вы можете просмотреть его таким образом. Обычно я предпочитаю свои классы, поэтому довольно очевидно, что UmbraModule или TCODConsole являются частью Umbra или libtcod API. Что касается STL, я предпочитаю, чтобы им не было. Префикс для всего std::* - это очень четкое указание на то, является ли он частью другой библиотеки или нет, поэтому код инфраструктуры/приложения четко различается - оставив CamelCase и подчеркивает вторичный вопрос:).