Существует ли краткий каталог соглашений об именах переменных?

StackOverflow https://stackoverflow.com/questions/235650

Вопрос

Есть много разных стилей имен переменных, с которыми я сталкивался на протяжении многих лет.

Текущая запись в Википедии о соглашениях об именах довольно легкая...

Мне бы хотелось увидеть краткий каталог соглашений об именах переменных, идентифицирующих их по имени/описанию, а также несколько примеров.

Если какое-то сообщество платформ особенно предпочитает какое-либо соглашение, это тоже стоит отметить.

Я превращаю это в вики-сообщество, поэтому, пожалуйста, создайте ответ для каждого соглашения и отредактируйте его по мере необходимости.

Это было полезно?

Решение

Лучший набор правил именования, который я видел, находится в книге " код Полный & Quot; У Стива Макконнелла есть отличный раздел, посвященный соглашениям об именах, и множество примеров. Его примеры проходят через ряд «лучших практик». для разных языков, но в конечном итоге оставьте за разработчиком, менеджером разработчика или архитектором решение о конкретном действии.

Другие советы

PEP8 - руководство по стилю для кода Python, являющегося частью стандартная библиотека, которая является относительно влиятельной в сообществе Python. Что касается бонусных баллов, в дополнение к покрытию соглашений об именах, используемых стандартной библиотекой Python, в нем представлен обзор соглашений об именах в целом.

Согласно PEP8: переменные, переменные экземпляра, функции и методы в стандартной библиотеке должны использовать строчные слова, разделенные подчеркиванием для удобства чтения:

foo
parse_foo
a_long_descriptive_name

Чтобы отличить имя от зарезервированного слова, добавьте подчеркивание:

in_
and_
or_

Имена, которые являются слабо частными (не импортированными 'из M import *'), начинаются с одного подчеркивания. Имена, конфиденциальность которых обеспечивается с помощью искажения имени, начинаются с двойного подчеркивания.

_some_what_private
__a_slightly_more_private_name

Имена, которые являются «специальными» методами Python, начинаются и заканчиваются двойным подчеркиванием:

__hash__  # hash(o) = o.__hash__()
__str__   # str(o) = o.__str__()

Sun опубликовала список соглашений об именах переменных для Java здесь . Список включает соглашения для именования пакетов, классов, интерфейсов, методов, переменных и констант.

Раздел о состояниях переменных

  
    

За исключением переменных, все константы экземпляра, класса и класса в смешанном регистре с первой буквой в нижнем регистре. Внутренние слова начинаются с заглавных букв. Имена переменных не должны начинаться с символа подчеркивания _ или знака доллара $, даже если разрешены оба.

         

Имена переменных должны быть короткими, но значимыми. Выбор имени переменной должен быть мнемоническим, то есть предназначенным для указания случайному наблюдателю намерения ее использования. Следует избегать односимвольных имен переменных, за исключением временных " throwaway " переменные. Общими именами для временных переменных являются i, j, k, m и n для целых чисел; c, d и e для символов.   

Некоторые примеры включают

int             i;
char            c;
float           myWidth;

Каким бы ни было ваше соглашение об именах, оно обычно не позволяет вам легко отличить:

  • переменная экземпляра (обычно частная)
  • локальные переменные (используются в качестве параметров или локально для функции)

Я использую соглашение об именах, основанное на использовании неопределенный артикль (a, an, some) для локальных переменных и отсутствие статьи для переменных экземпляра, как описано в этом вопросе о переменный префикс.

Итак, префикс (либо мой, либо любой другой префикс из списка в этом вопросе) может быть одним из способов очистки переменная соглашение об именовании.

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

Здесь «Разговорник Java-программистов». Эйнар Хест.

Он проанализировал грамматическую структуру названий методов вместе со структурой тел методов и собрал такую ​​​​информацию, как:

добавить-[имя существительное]-* Эти методы часто имеют параметры и создают объекты.Они очень редко возвращают значения полей.Фраза появляется практически во всех приложениях.

и так далее...собраны из сотен проектов с открытым исходным кодом.

Для получения дополнительной справочной информации, пожалуйста, обратитесь к его бумага SLE08.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top