Как уже было сказано, код читается гораздо больше раз, чем пишется. Выработка хороших навыков форматирования при написании кода почти так же важна, как и обеспечение его работы.
Основная функция кода - работать, вторая - сделать его интерпретируемым, если вы планируете использовать его более одного раза. Выработка хороших привычек и следование общим рекомендуемым методам форматирования, представленным в PEP-8 (можно найти здесь) - это простой и быстрый способ стандартизировать внешний вид вашего кода. PEP-8 (Python Enhancement Proposal # 8) был создан как средство, чтобы попытаться создать шаблон общих практик с целью повышения удобочитаемости и стандартизации. В этой статье я расскажу о некоторых изменениях, которые вы можете внести в свой код, чтобы сделать его функциональным и стильным.
Макет кода
Отступ
PEP-8 содержит подробные инструкции о том, когда и как следует использовать отступы. Я выделю два случая, которые могут не быть интуитивно понятными для начинающего программиста.
- Табуляторы или интервалы - Python 3 решает эту проблему смешивания табуляции и пробелов, но теоретически пробелы являются предпочтительным методом отступа, но табуляции подходят, если они уже постоянно используются в существующем коде.
- Максимальная длина строки - Ограничьте любую строку длинного и сложного кода до 79 символов. Это больше для эстетики, а также для того, чтобы вы могли максимально увеличить пространство на экране для других окон вашей IDE. Строки документов и комментарии должны содержать не более 72 символов.
- Разрывы строк по отношению к операторам - это на самом деле то, что значительно упростит понимание кода, если вы посмотрите и сравните разницу, но разрывы строк следует вставлять перед оператором, посмотрите на блок кода ниже. Первый пример - разрыв строки до, а второй - после. Второй подход делает понимание выражения намного проще с визуальной точки зрения, поскольку это сравнимо с написанием арифметической задачи от руки.
total_cost = (retail price + total_taxes + shipping_handling - discount) # Preferred option total_cost = (retail price + total_taxes + shipping_handling - discount)
Импорт
Постарайтесь максимально использовать абсолютный импорт, чтобы сделать код более читабельным, а также чтобы читатель мог понять, какие модули поступают из каких библиотек. Если вторая часть менее важна или используются общие модули в библиотеке, можно импортировать модули исключительно из библиотеки.
- Импортируйте только одну библиотеку за раз. (Единственным исключением будет вызов нескольких модулей из импортированной библиотеки в одной строке, как показано ниже)
#Good only calling a single library import statistics #exception for multiple modules from scipy import optimize, stats
Пробелы
Как написано в PEP-8, чрезмерные пробелы могут быть грубыми для глаз и заставлять возвращаться и вносить исправления / исправления немного больше времени.
- Сразу после открывающейся круглой скобки:
2. Между конечной общей и закрытой круглой скобкой
3. Перед запятыми, точкой с запятой или двоеточием
4. Обратите внимание, что в срезах последовательных типов данных двоеточие действует как оператор. Вы должны обрабатывать двоеточие с одинаковым пространством с обеих сторон от него (см. Примеры ниже).
5. Непосредственно перед открывающей круглой скобкой при вызове функции.
6. Дополнительные пробелы, чтобы сопоставить задание с другим.
1. spam(ham[1], {eggs: 2}) # Good spam( ham[ 1 ], { eggs: 2 } ) # Bad 2. foo = (0,) # Good bar = (0, ) # Not so good 3. if x == 4: print x, y; x, y = y, x # Thumbs up! if x == 4 : print x , y ; x , y = y , x # Ewww! 4. ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:] # Good ham[lower+offset : upper+offset] # Good too ham[1: 9], ham[1 :9], ham[1:9 :3] # Ouch ham[lower : : upper] # Eyes hurting 5. spam(1) # Good spam (1) # Why?? 6. x = 1 y = 2 long_variable = 3 # Good x = 1 # Excessive spaces in code block y = 2 long_variable = 3
Ключ к пробелам - использовать их только по мере необходимости. Обратите внимание на то, сколько дополнительного места создается ненужными пробелами. Не переусердствуйте и убедитесь, что ясность и последовательность кода не нарушены.
Комментарии
Я лично против использования тонны комментариев в коде, если только вы не пишете его явно для того, чтобы кто-то учился на нем. Назначение переменных, разработка функций и все остальное в вашем коде должны иметь удобочитаемость, чтобы кто-то с опытом программирования мог понять, что происходит. Это не означает, что комментариев быть не должно, а скорее (как и пробелы) использовать их по мере необходимости. Например, когда что-то может быть не очевидно для следующего читателя кода.
- Обновляйте комментарии по мере изменения кода (обязательно !!!)
- Комментарии должны быть полными предложениями для удобства чтения.
- Абзацы внутри комментариев блока должны быть разделены строкой, начинающейся с #.
- Следует избегать встроенных комментариев, поскольку они обычно считаются ненужными и отвлекающими.
Стили имен
При присвоении имен элементам в коде приведенные ниже примеры являются общепринятыми формами:
b (single lowercase letter) B (single uppercase letter) lowercase lower_case_with_underscores UPPERCASE UPPER_CASE_WITH_UNDERSCORES CapitalizedWords (or CapWords, CamelCase5, StudlyCaps) mixedCase (differs from CapitalizedWords by initial lowercase character!) Capitalized_Words_With_Underscores (ugly!)
Надстройки
Существует множество надстроек, которые вы можете установить в свою среду IDE, которые будут вносить предложения и / или автоматически исправлять ваш код в соответствии с PEP-8 и другими стандартами форматирования. Я использую PyLint, но есть много других подобных надстроек.
Надеюсь, эта небольшая заметка о стиле кодирования поможет сделать ваш код более лаконичным и, что более важно, более легким для чтения! Мы будем благодарны за любые комментарии или отзывы, и если у вас есть что-то, что вы хотели бы изучить подробнее, оставьте ответ на эту статью.