C: 2,0: Invalid name "b" for type constant
354
Глава 12. Быть питонщиком
(should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 3,0: Invalid name "c" for type constant
(should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
Отлично, больше строк, начинающихся с Е, нет. Наш счет увеличился с -3.33
до 4.29:
Your code has been rated at 4.29/10
pylint хочет увидеть строку документации (короткий текстовый фрагмент
в верхней части модуля или функции, описывающий код) и считает, что короткие
имена переменных вроде a, b и c не очень аккуратны. Сделаем pylint счастливее,
а наш код — еще лучше:
"Module docstring goes here"
def func():
"Function docstring goes here. Hi, Mom!"
first = 1
second = 2
third = 3
print(first)
print(second)
print(third)
func()
$ pylint style3.py
No config file found, using default configuration
Жалоб нет. А какой у нас счет?
Your code has been rated at 10.00/10
Не так уж и плохо?
Еще одним контролером стиля является PEP-8 (https://pypi.python.org/pypi/pep8),
вы можете установить его привычным способом:
$ pip install pep8
Что он скажет о нашей последней версии кода?
$ pep8 style3.py
style3.py:3:1: E302 expected 2 blank lines, found 1
Чтобы сделать код еще более стильным, он рекомендует добавить пустую стро-
ку после начальной строки документации модуля.
unittest
Мы убедились, что больше не оскорбляем чувство стиля богов кода, поэтому теперь
можно перейти к настоящим тестам логики вашей программы.
Хорошим тоном является написание и запуск тестовых программ до отправки
кода в систему контроля исходного кода. Написание тестов поначалу может быть
Тестируем код
355
утомительным, но они действительно помогают вам находить проблемы быстрее,
особенно регрессионные тесты (суть которых заключается в том, чтобы сломать
то, что раньше работало). Болезненный опыт учит всех разработчиков тому, что
даже самое маленькое изменение, которое, по их заверениям, не затрагивает другие
области приложения, на самом деле влияет на них. Если вы взглянете на качествен-
ные пакеты Python, то заметите, что они поставляются с набором тестов.