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

Основная функция кода - работать, вторая - сделать его интерпретируемым, если вы планируете использовать его более одного раза. Выработка хороших привычек и следование общим рекомендуемым методам форматирования, представленным в 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, чрезмерные пробелы могут быть грубыми для глаз и заставлять возвращаться и вносить исправления / исправления немного больше времени.

  1. Сразу после открывающейся круглой скобки:

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, но есть много других подобных надстроек.

Надеюсь, эта небольшая заметка о стиле кодирования поможет сделать ваш код более лаконичным и, что более важно, более легким для чтения! Мы будем благодарны за любые комментарии или отзывы, и если у вас есть что-то, что вы хотели бы изучить подробнее, оставьте ответ на эту статью.