Какие сокращения мы должны использовать для имен переменных Python? - PullRequest
8 голосов
/ 05 декабря 2010

Обычно я использую стандартное именование, указанное в PEP-8 для переменных.Как:

delete_projects
connect_server

Однако иногда я не могу найти ни одного хорошего имени, а имя просто расширяется до длинного:

project_name_to_be_deleted 

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

Существует ли какой-либо стандарт для выбора определенных сокращений для хорошо известных имен переменных, таких как delete,project,configuration, etc.?Как вы выбираете короткие, но хорошие и удобочитаемые имена переменных?

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

Ответы [ 5 ]

5 голосов
/ 05 декабря 2010

pr_nm_del? Вы могли бы также позволить кошке назвать это. Я считаю, что следует избегать аббревиатур любой ценой, кроме общеизвестных / очевидных (например, del, как упоминалось в комментариях - это даже ключевое слово языка!), Которые экономят много текста.

Но это не означает слишком подробные идентификаторы. Точно так же, как контекст важен для понимания утверждений на естественных языках, идентификаторы часто могут быть намного короче (и так же понятны), ссылаясь на контекст. В вашем примере project_name отлично подходит - процедура уже называется delete_project, поэтому project_name, очевидно, относится к названию проекта, который нужно удалить. Даже name один может быть в порядке. Не нужно указывать это снова, добавляя _to_be_deleted.

1 голос
/ 05 декабря 2010

Эта проблема решается сама собой, когда вы выполняете ООП.Субъект (project, configuration) - это класс, а глагол (delete, etc) - это имя метода, то есть:

class Workspace(object):

   def delete_project(self, project):
       log.info("Deleting", project.name)
       ...
1 голос
/ 05 декабря 2010

В вашем примере у вас есть функция с именем delete_project.Хотите знать, как назвать переменную, в которой хранится проект, который нужно удалить?Просто 'project'!

def delete_project(self, project):
    del self.projects[project]

Simple.

Имена переменных не должны быть полностью описательными.Контекст может многое объяснить тому, как мы понимаем определенное имя в определенный момент времени.Не нужно говорить «это проект, который нужно удалить» при обсуждении функции, которая удаляет проект.

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

0 голосов
/ 06 декабря 2010

Очень немногие имена имеют "стандартные" сокращения. То, что вы считаете «обычным» или «стандартным», не то же самое для кого-то другого. Время, затрачиваемое на установку хорошего имени, хорошо инвестируется, поскольку код читается гораздо чаще, чем пишется. В качестве примера я видел «Конфигурация» сокращенно как «Конфигурация» "CNFG" "CFG" «Кнф» ... таким образом, урок - не сокращайте, если нет очень хорошо известного сокращения!

0 голосов
/ 05 декабря 2010

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

Что касается вашего примера, project_name_to_be_deleted в порядке. Если вы хотите сократить его, я предлагаю использовать project_name_to_del, поскольку del - это известное сокращение для delete (вы даже можете найти это на своей клавиатуре). И использование conf как configuration также популярно. Но не иди дальше. Например, proj2del не очень хорошая идея.

Кроме того, для внутренних / локальных вещей хорошо использовать короткие, не очень описательные имена.

...