もっとも使用している言語がPythonである以上読んでおいたほうが良さそうだと思い購入。
既に知っていたり、実務で活用している内容も多々あったが、「そんなのもあったんだ」と発見がある良い本だった。特に、プロパティベーステストは名前だけ知っている状態で、ミューテーションテストは名前すら知らなかったので是非試してみたいと思えた。
以下自分が良いと感じた部分。
- Annotated型は現在コミュニケーション目的でしか使えない
- LiteralとEnumの使い分け
- enum.Flagでビット演算ができる
- TypedDictとDataclassの使い分け
- 基本はdataclass推奨。振る舞いを足したり、イミュータブル性や等価・大小比較ができるのが嬉しい
- 上のメリットが必要なく、元から辞書を使ってる箇所はTypedDict良さそう
- namedtupleを使う必要はなくなってきている (dataclassで代用できる)
- クラスが抱える不変式の維持を、パフォーマンスなどの観点により外だしする場合、保守性の低下を認識した上で他の手段(厳格なlint、厳格なレビュー)で補う必要がある
- typing.Protocolでダックタイピングの支援
- pydanticによるdataclass(pydantic.dataclasses.dataclass)を利用した実行時型チェック
- 独自Pylintプラグインを実装してプロジェクト独自のチェック
- dodgyによる機密情報探索目的の静的解析
- Hypothesisによるプロパティベーステスト
mutmutによるミューテーションテスト
以下話の本筋ではないが紹介されたライブラリとその目的