Российский Новый Университет
Опубликован: 25.01.2016 | Доступ: свободный | Студентов: 2234 / 161 | Длительность: 16:40:00
Лекция 3:

Стиль кодирования в Django

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >

Цель лекции: Рассмотреть стиль кодирования на платформе Django; изучить стандартную структуру проекта Django; ознакомиться с системой контроля версий Git и изучить ее основные команды; установка Twitter Bootstrap для быстрой разработки стилей проекта.

Ключевые термины: Django, Python, sublime, сервер, разра-ботка, проект, база, приложение, bootstrap, файл, git, версия

Стиль кодирования Django

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

Для учета стандартных техник, были созданы улучшенные предложения Python, и одной из таких широко распространенных техник для разработки, принятой в сообществе, является PEP8, гид по стилю кода Python – лучший путь стилизовать код Python авторизованный Гидо ван Россумом.

Как сказано в документации, "PEP8 работает согласно семантике и соглашениям, принятым в строках документации Python". Для дальнейшего ознакомления, пожалуйста, посетите http: //legacy.python.org/dev/peps/pep-0008/.

Улучшения понимания в Python.

Когда вы пишете код на Python, отступ играет важную роль. Оно выступает в качестве блока в других языках, например, как в C или Perl. Среди программистов всегда идут споры о том, использовать ли где-то табуляцию или пробелы, а если использовать пробелы, то сколько: два, четыре или восемь. Использование 4 пробелов для отступа лучше, чем восемь, а если при этом есть некоторое количество связанных блоков, то восемь пробелов могут помочь разместить на каждой строке больше кода. Но опять же, это выбор программиста.

Следующий фрагмент показывает, к чему ведет неверное использование отступа:

<<< def a():
... print "foo"
...	print	"bar"
IndentationError: unexpected indent

И что же мы должны использовать? Табуляцию или пробелы?

Выберите что-то одно, но никогда не смешивайте табуляцию и пробелы в одном проекте, иначе это превратится в кошмар для поддержки. Более популярно в Python делать отступы пробелами; табуляция используется в последнюю очередь. Если какой-либо встретившийся вам код использует смесь из табуляции и пробелов, то его следует привести к варианту с пробелами.

Создать правильный отступ – достаточно ли четырех пробелов на уровень отступа?

Много насчет этого существует путаницы, но синтаксис языка Python целиком завязан на отступах. Будем честны: в большинстве случаев, это так. Строго рекомендуется использовать 4 пробела на уровень отступа, а если вы пользуетесь двумя пробелами, то прекратите это делать.

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

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

Выступ (также известный как отрицательный отступ) – стиль отступа, при котором все строки отступают, кроме первой строки абзаца. Предыдущий абзац является примером использования выступа

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

bar = some functionname( varfirst, varsecond,
varthird, varfourth)
# Here indentation of arguments makes them grouped, and stand clear from others.
def some function name(
varfirst, varsecond, varthird, varfourth): print(varfirst)
# This example shows the hanging intent.?

Нас не вдохновляет следующий фрагмент кода, да он и не работает в Python

#	When vertical alignment is not used. Arguments on the first line are forbidden
foo = somefunctionname(varfirst, varsecond, varthird, varfourth)
#	 Further indentation is required as indentation is not distinguish-able between arguments and source code.
def some_function_name(
varfirst, varsecond, varthird,
varfourth):
print(varfirst)

Хотя дополнительные отступы не требуются, но если вы хотите их использовать, чтобы убедиться, что код работает, вы можете использовать следующий стиль кода:

#	Extra indentation is not necessary, if (this
and that): dosomething()

Важность пустых строк

Важность двух пустых строк и одной пустой строки заключается в следующем:

  • Две пустые строки: Двойная пустая строка может использоваться для отделения функций верхнего уровня и определения класса, что улучшает читабельность кода.
  • Одиночная пустая строка: Одиночная пустая строка может быть использована в таких ситуациях – например, каждая функции внутри класса может быть отделена одной строкой, а функции, связанные отношениями, могут быть сгруппированы одной пустой строкой. Вы можете так же отделить логическую часть исходного кода одиночной строкой.

Импорт пакета

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

Лучше всего производить импорт, как показано ниже:

import os import sys

Не рекомендуется вызывать для импорта в одной строке более одного модуля, например:

import sys, os

Вы можете импортировать модули, придерживаясь следующего примера, хотя это на выбор:

 from django.http import Http404, HttpResponse

Если ваш импорт получается дольше, то следующий метод поможет объявить их:

from django.http import (
Http404, HttpResponse, HttpResponsePermanentRedirect
)
< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Константин Боталов
Константин Боталов

Вроде легкие вопросы и ответы знаю правильные, но система считает иначе и правильные ответысчитает неправильными. Приходится выполнть по несколько раз. Это я не правильно делаю или тест так составлен?

Владимир Филипенко
Владимир Филипенко

Листинг показывает в 4-ой лекции, что установлен Django 1.8.4. Тут же далее в этой лекции указаны настройки, которые воспринимает Django 1.7 и младше.