•
•
•
Эти проекты могут решать и другие задачи (не только те, что мы упомянули), и мы надеемся, что после прочтения текущей главы вы захотите загрузить и прочесть подробнее хотя бы один-два этих проекта самостоятельно (а затем, возможно, даже рассказать о них другим).
Типичные функции
Некоторые функции одинаковы у всех проектов: детали снепшотов для каждого из них показывают, что их функции состоят из очень малого количества строк кода (меньше 20, исключая пробелы и комментарии) и множества пустых строк. Крупные и более сложные проекты включают строки документации и/или комментарии; обычно больше пятой части содержимого базы кода составляет документация. Как вы можете видеть на примере HowDoI, в котором нет строк документации (поскольку он не предназначен для интерактивного использования), комментарии необязательны, если код простой и ясный. В табл. 5.1 описаны стандартные характеристики этих проектов.
Пакет | Лицензия | Количество строк | Строки документации (% от общего количества строк) | Комментарии документации (% от общего количества строк) | Пустые строки документации (% от общего количества строк) | Средняя длина функций |
---|---|---|---|---|---|---|
HowDoI | MIT | 262 | 0 | 6 | 20 | 13 строк |
Diamond | MIT | 6021 | 21 | 9 | 16 | 11 строк |
Tablib | MIT | 1802 | 19 | 4 | 27 | 8 строк |
Requests | Apache 2.0 | 4072 | 23 | 8 | 19 | 10 строк |
Flask | BSD 3-clause | 10 163 | 7 | 12 | 11 | 13 строк |
Werkzeug | BSD 3-clause | 25 822 | 25 | 3 | 13 | 9 строк |
В каждом разделе мы будем использовать разные приемы чтения кода для того, чтобы понять, чему посвящен проект. Далее мы приведем фрагменты кода, которые демонстрируют темы, описанные в этом руководстве. (Если мы не выделили какую-то функцию в одном проекте, это не означает, что ее там нет; мы лишь хотим охватить большое количество концепций с помощью этих примеров.) После завершения чтения этой главы вы будете более уверенно работать с кодом. Приведенные примеры продемонстрируют, что такое хороший код (некоторые идеи вы, возможно, захотите применить в своем коде в будущем).
HowDoI
Проект HowDoI, написанный Бенджамином Гляйтсманом (Benjamin Gleitzman), станет отличной стартовой точкой нашей одиссеи, несмотря на то что он состоит менее чем из 300 строк.
Читаем сценарий, состоящий из одного файла
Сценарий обычно имеет четко определенные точку входа, параметры и точку выхода. Благодаря этому читать его проще, чем библиотеки, которые предоставляют API или фреймворк.
Загрузите модуль HowDoI с GitHub[55]:
$ git clone https://github.com/gleitz/howdoi.git
$ virtualenv — p python3 venv # Или используйте mkvirtualenv, на ваш выбор…
$ source venv/bin/activate
(venv)$ cd howdoi/
(venv)$ pip install — editable.
(venv)$ python test_howdoi.py # Запустите юнит-тесты
Теперь у вас должен быть установлен исполняемый файл howdoi в каталоге venv/bin. (Вы можете увидеть его, введя cat 'which howdoi' в командной строке.) Он был сгенерирован автоматически, когда вы ввели команду pip install.
Документация к HowDoI находится в файле README.rst, который располагается в репозитории на GitHub (https://github.com/gleitz/howdoi). Это небольшое приложение для командной строки, позволяющее пользователям искать в Интернете ответы на вопросы, связанные с программированием.
В командной строке терминальной оболочки можно ввести команду howdoi — help, чтобы узнать, как пользоваться HowDoI:
(venv)$ howdoi — help