|
| 1 | +{ |
| 2 | + "cells": [ |
| 3 | + { |
| 4 | + "cell_type": "code", |
| 5 | + "execution_count": null, |
| 6 | + "id": "4d573c12", |
| 7 | + "metadata": {}, |
| 8 | + "outputs": [], |
| 9 | + "source": [ |
| 10 | + "\"\"\"Choosing clear names for variables, functions, and classes.\"\"\"" |
| 11 | + ] |
| 12 | + }, |
| 13 | + { |
| 14 | + "cell_type": "markdown", |
| 15 | + "id": "f7c8e8b0", |
| 16 | + "metadata": {}, |
| 17 | + "source": [ |
| 18 | + "## Компактные, содержательные имена важны для удобочитаемости вашей программы\n", |
| 19 | + "\n", |
| 20 | + "Если вы пишете не «одноразовый» код, который вы не собираетесь сопровождать\n", |
| 21 | + "после однократного запуска программы, вам стоит подумать над выбором хороших\n", |
| 22 | + "имен в вашей программе. Выбор имен — субъективный выбор, который делаете именно вы.\n", |
| 23 | + "Автоматизированные средства форматирования (такие как Black) не способны\n", |
| 24 | + "решить, как должны называться ваши переменные.\n", |
| 25 | + "\n", |
| 26 | + "#### Схемы регистра имен\n", |
| 27 | + "\n", |
| 28 | + "- Змеиный регистр `snake_case` разделяет слова символом подчеркивания.\n", |
| 29 | + "\n", |
| 30 | + "- Верблюжий регистр `camelCase` — слова записываются в нижнем регистре,\n", |
| 31 | + "но второе и следующие слова начинаются с заглавной.\n", |
| 32 | + "\n", |
| 33 | + "- Схема Pascal `PascalCase` — названа так, потому что применяется в языке\n", |
| 34 | + "программирования Pascal; аналогична схеме верблюжьего регистра, но первое\n", |
| 35 | + "слово в ней тоже начинается с заглавной.\n", |
| 36 | + "\n", |
| 37 | + "\n", |
| 38 | + "#### Соглашения об именах PEP 8\n", |
| 39 | + "\n", |
| 40 | + "**•** Все буквы должны быть буквами ASCII — то есть латинскими буквами\n", |
| 41 | + "верхнего и нижнего регистров без диакритических знаков.\n", |
| 42 | + "**•** Имена модулей должны быть короткими состоять только из букв нижнего регистра.\n", |
| 43 | + "**•** В схеме должны записываться \n", |
| 44 | + "**•** Имена классов необходимо записывать в схеме Pascal\n", |
| 45 | + "**•** Имена констант следует записывать в верхнем змеином регистре\n", |
| 46 | + "**•** Имена функций, методов и переменных записывают в нижнем змеином\n", |
| 47 | + "регистре\n", |
| 48 | + "**•** Приватные атрибуты классов всегда начинают с символа подчеркивания ( _ )\n", |
| 49 | + "\n", |
| 50 | + "\n", |
| 51 | + "#### Длина имен\n", |
| 52 | + "\n", |
| 53 | + "Имена не должны быть слишком короткими или слишком длинными. Так как код читают чаще, чем пишут, лучше все-таки задавать более длинные имена переменных. Не пропускайте буквы в своем коде. устаревшей считается венгерская запись — практика включения сокращения типа данных в имена. Например, имя `strName` указывает, что\n", |
| 54 | + "переменная содержит строковое значение. Современные языки и IDE могут предоставить программисту информацию о типе данных без этих префиксов\n", |
| 55 | + "\n", |
| 56 | + "\n", |
| 57 | + "\n", |
| 58 | + "#### Выбирайте имена, пригодные для поиска\n", |
| 59 | + "\n", |
| 60 | + "Чтобы имя было найдено немедленно, создавайте уникальные имена с более длинными именами переменных, которые содержат конкретную информацию. Лучше всего писать код, понятный тем, для кого английский язык не является родным, то есть прямолинейно, традиционно и без юмора.\n", |
| 61 | + "\n", |
| 62 | + "\n", |
| 63 | + "\n", |
| 64 | + "#### Не заменяйте встроенные имена\n", |
| 65 | + "\n", |
| 66 | + "Никогда не используйте встроенные имена Python для своих переменных. Наиболее часто заменяемые имена Python — all, any, date, email, file, format, hash,\n", |
| 67 | + "id, input, list, min, max, object, open, random, set, str, sum, test и type. Не берите их для своих идентификаторов. Другая распространенная проблема — присваивание файлам .py имен, совпадающих с именами сторонних модулей.\n", |
| 68 | + "\n", |
| 69 | + "\n", |
| 70 | + "#### Итоги\n", |
| 71 | + "\n", |
| 72 | + "Выбор имен не имеет никакого отношения к алгоритмам или компьютерной теории, и все же это важнейший фактор написания удобочитаемого кода. В конечном счете выбор имен, используемых в вашем коде, остается на ваше усмотрение, но вы\n", |
| 73 | + "должны учитывать существующие рекомендации. В PEP 8 вы найдете несколько\n", |
| 74 | + "соглашений о выборе имен — например, имена в нижнем регистре для модулей\n", |
| 75 | + "и имена в схеме Pascal для классов. Имена не должны быть слишком короткими\n", |
| 76 | + "или слишком длинными. Однако часто лучше сделать имя избыточным, чем недостаточно содержательным\n", |
| 77 | + "\n", |
| 78 | + "Имена упрощают чтение кода людьми, а не выполнение его компьютерами. Если\n", |
| 79 | + "ваш код хорошо читается, он будет понятным. Если он понятен, его легко изменить.\n", |
| 80 | + "А если его легко изменить, вам будет проще исправить ошибки или добавить новые\n", |
| 81 | + "возможности. Использование понятных имен — основополагающий фактор разработки качественного программного обеспечения." |
| 82 | + ] |
| 83 | + } |
| 84 | + ], |
| 85 | + "metadata": { |
| 86 | + "language_info": { |
| 87 | + "name": "python" |
| 88 | + } |
| 89 | + }, |
| 90 | + "nbformat": 4, |
| 91 | + "nbformat_minor": 5 |
| 92 | +} |
0 commit comments