Привет. Последнее время задумался над тем, как правильнее называть переменные и функции. Я понимаю, что это наверное весьма субъективно, но хочется послушать ваши мнения. Речь идет не о нотации. Также понятно, что имя переменной должно максимально точно отражать ее содержимое. Я хочу узнать о последовательности слов, времени, длине наименования и т.д. Например, как бы назвали "общее время сохранение пользователей" (в функции также есть другие счетчики времени сохранения пользователей), total_time, time_total, save_time_users и т.д.? Первое слово должно наиболее отражать содержание переменной (time_total) или лучше называть так, как говорим (total_time)? Имеет ли смысл называть переменную по частям речи, т.е. прилагательное_существительное? get_groups_user или get_user_groups?
Я думаю, смысл вопроса понятен. Хочется писать единообразный и понятный код. Поделитесь своим видением, можно с примерами.
PEP8 вот тут написаны рекомендации и про функии и про переменные и про классы, про то что за чем располагать, про количество символов в строке, про отступы..
Вопрос не про отступы, не по количество символов в строке, не про то, что за чем располагать, не о нотации, которую описывает pep8, а о грамотном наименовании переменных, чтобы было удобно понимать код.
aesfur: Почитайте внимательно PEP8 - там не только про отступы и пробелы, там ещё есть раздел "Соглашения по именованию" - как раз ответ на ваш вопрос. "Уж сколько раз твердили миру..." - RTFM!
denizen: Ну перечитал я 10 раз PEP8, там про стиль, нотацию и прочее. Это и так понятно. Мой вопрос в другом. Порядок слов в наименовании, части речи, уместные артикли и т.д. Хватит тыкать меня пепом, я его и так знаю. Или я читаю какой-то не тот пеп, не пойму.
Самое главное правило - чтобы в данном контексте сразу было понятно, что означает переменная. Чем ближе к английскому, тем лучше (порядок слов сохранять). Есть всего пару основных правил:
- главное слово в названии - это существительное или прилагательное
- булевые могут иметь префикс is_... (но не isnot_...)
- артикли не использовать
Не нужно дублировать смысл, который и так понятен из контекста. Если у нас, скажем, метод parse_html(), то внутри него вместо html_nodes можно писать просто nodes.
Если работаете в команде стоит сесть и записать перечень слов из которых строятся имена, а так же список пар например Add/Remove, Open/Close, Program/Clear, Create/Destroy к каким-то стоит дописать смысловую нагрузку.
Например, метод Init производит начальную инициализацию контента объекта, по сути аналог конструктора, и его нельзя вызывать никак иначе кроме как первым обращением к этому объекту, а допустим Reset переводит объект в такое же начальное состояние, но уже из произвольного состояния.
Size это размер в байтах, словах или чём-то еще в чем принято у вас.
Len или Length длина в элементнах