Книга Robust Python

2 minute read

Узнала про новую книгу Robust Python из подкаста Talk Python To Me. Очень рекомендую тем, кто уже какое-то время работает с Python и тем кому уже надо поддерживать написанный код, особенно если не только вы пишите код. Эта книга однозначно вошла в число моих любимых книг.

English translation

Это новая книга 2021 года. Книга посвящена вопросам написания кода, который легко менять, поддерживать и в целом воспринимать, что в коде происходит. В книге используется Python 3.9. Главный момент это то что в книге рассматривается не то что такое, например, dataclass, а как и когда их использовать, какие преимущества они дают.

Мне понравилось:

  • примеры кода с едой :)
  • узнала новое (mutation testing, mypy alternatives, security analysis tools, code complexity tools)
  • у меня появилось много идей
  • книгу было интересно читать
  • шаблоны проектирования со свободой не использовать классы :)

Темы:

  • Аннотация типов
  • Создание своих типов (Enums, Data Classes, Classes, Protocols, subtyping, pydantic)
  • Расширяемый (extensible) Python
  • Тестирование кода

По всем темам есть вводная информация что это такое, но остальное уже о примерении технологии на практике. Из-за этого лучше знать хотя бы в каком-то виде рассматриваемые темы, иначе может быть сложно читать зачем это и почему нужно, когда ещё толком непонятно что это такое (для изучения тем отлично подойдет Fluent Python, особенно 2 издание, которое выйдет в конце года).

Почти треть книги посвящена аннотации типов, а именно как лучше писать аннотацию в конкретных случаях и что она дает с точки зрения поддержки кода, изменения и нахождения ошибок. Рассматриваются конкретные примеры как лучше писать аннотацию в том или ином случае. Плюс, так как книга новая, рассматривается новый функционал в аннотации типов, который добавился в Python 3.8, 3.9.

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

Во втором разделе рассматривается создание своих классов, тут такие темы как Enum, Data Classess, обычные классы, интерфейсы, протоколы, создание подтипов и использование pydantic. Все с практическим применением и объяснением зачем и когда лучше использовать тот или иной вариант создания типов.

В третьем разделе рассматриваются зависимости в коде. Тут речь не столько о модулях от которых зависит код, сколько о зависимостях одной части кода от другой. Плюс рассматриваются несколько шаблонов (patterns) проектирования кода и что особенно понравилось мне, шаблоны показаны на практических примерах, где надо на функциях, где надо на классах, а не обязательно так как они классически выглядят в ООП.

В четвертом разделе речь о статическом анализе кода и тестировании. В статическом анализе кода речь о линтерах, проверка сложности (complexity) кода, анализ безопасности. В разделах о тестировании рассматриваются не только распространенные unit тесты, но acceptance, property-based и mutation тестирование.

Ссылки:

Leave a Comment