Хотя здесь я буду ссылаться конкретно на соглашения об именах в C ++ и Бьярне Страуструпе , в принципе я видел, что люди используют несколько схожие правила для других языков здесь и там.
Итак, основная идея заключается в том, что при чтении кода нужно различать стандартные типы от пользовательских типов . Например, Бьярн Страуструп предлагает
начальная заглавная буква для типов (например, квадрат и график)
который, учитывая, что
Язык C ++ и стандартная библиотека не используют заглавные буквы
позволяет достичь цели, указанной выше.
Но зачем нам это делать? Какова может быть цель различения стандартных и пользовательских типов?
Я не мог найти никаких рассуждений Бьярна Страуструпа по этому вопросу, и, кроме того, я сам думаю диаметрально противоположным образом. Я знаю, я знаю, "Кто я такой, чтобы оспаривать Страуструпа?" Но, слушайте, куча возможностей языка C ++, например, перегрузка операторов, служит для того, чтобы пользовательские типы имели такой же уровень синтаксической поддержки, что и стандартные типы. И тогда все это озадачено другой дисциплиной именования ...
PS Не говоря уже о том, что часто одного слова недостаточно, чтобы назвать класс, а слово, разделенное подчеркиванием, начинающееся с заглавной буквы, выглядит настолько иностранным.
источник
Ответы:
В этом нет абсолютно никакой цели или пользы. Одной из целей C ++ было взаимозаменяемое обращение с UDT и примитивами, и хотя они не достигли полного успеха, это одна из областей, где вам не нужно проводить различия.
Когда дело доходит до именования, Страуструп сходит с ума, и это научно доказанный факт.
источник
snake_case
для своих классов и пространств имен, и у меня еще не было проблем - или путаницы - вызванных этим.Соглашения об именах касаются поддержки понимания кода человеком (т.е. программистом и сопровождающим).
UDT могут быть определены так, чтобы объявление переменных, инициализация, выражения и операторы работали с ними иначе, чем в случае стандартных типов. Для поиска проблем полезно, чтобы сопровождающий имел некоторый признак того, что в некотором разделе кода могут быть какие-то странные вещи (например, реализация пользовательского интегрального типа, используемого в некоторой функции, может иметь недостаток в том, как она выполняет сложение).
Существует много способов предоставления таких подсказок (комментарии, спецификации проекта и т. Д.). Преимущество соглашений об именах заключается в том, что они присутствуют в коде, тогда как комментарии могут быть опущены, устарели и т. Д.
источник
Одна из причин, по которым я использую слова с прописными буквами для типов, - это различать переменные от типов. Это позволяет объявить переменную с заглавными буквами, с тем же именем:
Это может быть полезно для классов, для которых в каждом контексте используется только один экземпляр, например, параметры конфигурации.
источник