Почему тяжелое использование аббревиатуры в C/С++?

Я читал на C и С++ в последнее время и не могу избавиться от чувства, что программисты C/С++ используют аббревиатуру для чрезмерного использования в именах переменных и функций. Я не вижу причины, почему это было бы полезно, поскольку оба являются скомпилированными языками. Практически весь код, с которым я столкнулся, использует аббревиатуру больше, чем на других языках (мой личный опыт, конечно).

Итак, тогда вопрос становится таким; есть ли причина, по которой вы хотели бы использовать сокращения в C/С++? Существуют ли проблемы с производительностью с использованием более длинных имен переменных или это просто соглашение?

EDIT: Похоже, я открыл банку червей здесь. Я надеялся на ответ "да/нет", а не обсуждение стиля кодирования.

Ответ 1

В основном это соглашение.

Была некоторая историческая необходимость, поскольку ранние компиляторы C не гарантировали, что идентификаторы были значительными для более чем 8 (или, может быть, даже 6) символов в некоторых случаях (вызывая MyFantasticFoo и MyFantasticBar, где считается равным компилятору). Современные компиляторы не имеют таких ограниченных ограничений, см. этот ответ для деталей.

Сегодня я думаю, что это скорее проблема конвенции/стиля, так как код C часто бывает кратким.

Ответ 2

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

Ответ 3

Во-первых, я не считаю это общим правилом; как Стив Джессоп напоминает нам в комментарии, другие языки, такие как APL, традиционно используют более короткие имена и Fortran (по крайней мере, когда Я использовал его) ограничил максимальную длину имени до шести.

Больше, чем язык, я считаю, что домен играет определенную роль. Для Например, Unix-программисты имеют тенденцию использовать более короткие имена, чем Windows программистов, несомненно, потому, что системный API использует более короткие (частично, по крайней мере, потому что Unix намного старше, и ранее линкеры не могли обрабатывать более шести или восьми символов, хотя это не объясняет creat вместо create). У математики также есть традиция сокращения имена: используя имена типа index, а не i для индекса при работе с математическими выражениями делает код менее ясно и пояснительно, поскольку традиционный символ для первый индекс в математике равен i. И многие другие домены имеют больше или менее установленные аббревиатуры или сокращения: когда я работал в телекоммуникациях спецификация doc (от клиента) говорила о TP и CX, а не точки окончания и крест соединения; и в моей нынешней банковской среде, даже вне программы, никто не будет писать "своп дефолта по кредиту" или "обеспеченное долговое обязательство", а не просто CDS или CDO. Поэтому, если вы видите более короткие имена на С++, это может быть из-за того, что вы смотрите на код, который делает разные вещи, и приходит из области, где аббревиатуры обычны даже вне среды программирования.