Two Scoops of Django / Двойное мороженное из Django: Стиль кода

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

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

lirikne 24.08.13 в 04:17

0

1.1 Важность создания читаемого кода

lirikne 24.08.13 в 04:18

0

Код читается чаще, чем пишется. Отдельные части кода пишутся мгновенно, а отлаживаются часами или могут быть больше никогда не тронуты. Это происходит, когда вы или кто-то другой смотрит код, написанный вчера или 10 лет назад, согласованный стиль представляется чрезвычайно полезным. Понятный код освобождает мысли от того, чтобы разбираться в несоответствии, из-за чего его легче поддерживать и развивать проекты любого масштаба.

lirikne 24.08.13 в 04:29

0

Что значит, приложить дополнительные усилия, чтобы сделать код читабельным насколько это возможно:

lirikne 24.08.13 в 04:30

0

Избегайте сокращения имен переменных.

lirikne 24.08.13 в 04:31

0

Расписывайте имена аргументов функций.

lirikne 24.08.13 в 04:32

0

Документируйте ваши классы и методы.

lirikne 24.08.13 в 04:33

0

Выносите повторяющиеся строки кода в многократно используемые функции и методы.

lirikne 24.08.13 в 04:34

0

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

lirikne 24.08.13 в 04:37

0

Возьмем к примеру надоедливые сокращенные имена переменный. Когда вы видите название переменной balance_sheet_decrease, это гораздо легче интерпретировать в своем уме, чем сокращенные переменные BSD или bal_s_d. Подобные сокращения могут сэкономить несколько секунд набора текста, но отзовутся вам несколькими часами или днями технического долга. Это того не стоит.

lirikne 24.08.13 в 07:02

0

1.2 PEP 8

lirikne 24.08.13 в 07:02

0

PEP 8 является официальным руководство по стилю для Python. Мы советуем тщательно прочитать и научиться ему следовать: http://www.python.org/dev/peps/pep-0008/

lirikne 24.08.13 в 07:06

0

PEP 8 описывает следующие условности кода:

lirikne 24.08.13 в 08:50

0

"Используйте 4 пробела для каждого уровня отступа"

lirikne 24.08.13 в 08:51

0

"Отделяйте функции верхнего уровня и определения классов двумя пустыми строками."

lirikne 24.08.13 в 08:52

0

"Определение метода внутри класса разделяются одной пустой строкой."

lirikne 24.08.13 в 08:53

0

Все файлы Python в ваших проектах Django должны придерживаться PEP 8. Если вам сложно запомнить PEP 8, то найдите плагин для вашего редактора кода, который проверяет код при вводе текста.

lirikne 24.08.13 в 09:12

0

Если опытный разработчик Python видит грубые нарушения PEP 8 в проекте Django, даже если он не говорит что они есть, он, вероятно, думает очень плохо. Поверьте нам, это так.

lirikne 24.08.13 в 09:21

0

ВНИМАНИЕ: Не изменяйте конвенций существующего проекта.

lirikne 24.08.13 в 09:22

0

Стиль PEP 8 относится только к новым проектам Django. Если вы пришли в существующий проект Django, который придерживается иного соглашения, отличного от PEP 8, тогда соблюдайте новые условности.

lirikne 24.08.13 в 09:24

0

Пожалуйста, прочтите раздел "Глупое следование является хобгоблином маленьких умов" в PEP 8 чтобы узнать подробнее об этой и других причинах, чтобы нарушать правила: http://2scoops.co/hobgoblin-of-little-minds

lirikne 24.08.13 в 09:41

0

1.3 Слово об Импорте

lirikne 24.08.13 в 09:42

0

PEP 8 предлагает группировать импорты в следующем порядке:

lirikne 24.08.13 в 09:42

0

Импорт стандартных библиотек

lirikne 24.08.13 в 09:58

0

Импорт связанный с третьей стороной.

lirikne 24.08.13 в 10:02

0

Локальные приложения или конкретные библиотеки

lirikne 24.08.13 в 10:03

0

Когда мы работаем над проектом Django, наш импорт выглядит примерно так:

lirikne 24.08.13 в 10:03

0

Пример 1.1

lirikne 24.08.13 в 10:04

0

# Импот стандартных бибилиотек

lirikne 24.08.13 в 10:05

0

from math import sqrt

lirikne 24.08.13 в 10:05

0

from os.path import abspath

lirikne 24.08.13 в 10:05

0

# Импорт из ядра Django

lirikne 24.08.13 в 10:06

0

from django.db import models

lirikne 24.08.13 в 10:06

0

from django.utils.translation import ugettext_lazy as _

lirikne 24.08.13 в 10:06

0

# Импорт сторонних приложений

lirikne 24.08.13 в 10:06

0

from django_extensions.db.models import TimeStampedModel

lirikne 24.08.13 в 10:13

0

# Imports from your apps

lirikne 24.08.13 в 10:13

0

from splits.models import BananaSplit

lirikne 25.08.13 в 07:07

0

(Заметка: Вам не обязательно комментировать ваши импорты, как у нас; комментарии тут лишь для объяснения примера.)

lirikne 25.08.13 в 07:09

0

Порядок импорта таков:

lirikne 25.08.13 в 07:10

0

Импорт стандартных библиотек.

lirikne 25.08.13 в 07:10

0

Импорт из ядра Django

lirikne 25.08.13 в 07:11

0

Импорт приложений третьих сторон.

lirikne 25.08.13 в 07:11

0

Импорт из приложений, которые вы создали, как часть этого проекта Django. (Вы можете прочитать больше про приложения в главе 4, Основы проектирования приложений.)

lirikne 25.08.13 в 07:12

0

1.4 Использование явного относительного импорта.

lirikne 25.08.13 в 07:14

0

При написании кода, важно делать так, чтобы было легче перемещать, переименовывать и переводить ваш труд. В Python, явные относительные импорты избавляют вас от необходимости разделять модульные пакеты на индивидуальные модули, нарушающие архитектуру вокруг них. Так как приложения Django - это просто пакеты на языке Python, тут применяются те же правила.

lirikne 25.08.13 в 08:31

0

Чтобы проиллюстрировать преимущества явного относительного импорта, давайте рассмотрим пример.

lirikne 25.08.13 в 08:33

0

Представьте себе, что в следующем фрагменте от Django проекта, созданного для отслеживания потребления мороженого, учитывая вафли/сахар/пирожное ?конуса, которые вы когда-либо ели.

lirikne 25.08.13 в 08:48

0

О нет, ваше приложение содержит жесткий импорт, что очень плохо!

lirikne 25.08.13 в 08:50

0

Плохой пример 1.1

lirikne 25.08.13 в 08:50

0
Минутку...

Следующая страница →