1
1

More than 1 year has passed since last update.

ロバストPython 雑メモ

Posted at

感想

わりと新しめの機能が多くて知識のアップデートになって良かった。

書籍のリンク

1章 ロバストPython入門

コードの意図を伝えるのが大事
意図を伝えるための手法

第I部 型アノテーション

2章 Pythonデータ型入門

動的型付けと静的型付け
ダックタイピング
型システムはデータの振る舞いの雛形と制約を示す

3章 型アノテーション

型アノテーションは基本使うべきだが、自明なところでは使うべきではない。

4章 型制約

Optional,Union,Literal,Annotated,NewType,Final

5章 コレクション型

TypedDict,Typevar,Generic
カスタムコレクション
collections.UserDict,UserString,UserList
collections.abc.Set

6章 型チェッカのカスタマイズ

mypy,pyre,pyright

7章 実践的な型チェックの導入

ペインポイントを特定する
適用コードを絞り込む
monkeytype,pytype

第II部 ユーザ定義型

8章 列挙型

Enum,auto(),Flag,@unique
IntEnum,IntFlagはどうしても必要なら使う

9章 データクラス

dataclass
等価比較eq=Ture
比較order=True
イミュータブルfrozen =True
listに要素を追加などはできちゃうので注意
TypedDict,namedtupleよりは、基本的にデータクラスを使うべき

10章 クラス

データクラスではなくクラスを使うのは不変式があるとき

11章 インターフェースの定義

自然なインターフェースを目指す
テスト駆動開発
README駆動開発
ユーザビリティテスト
特殊メソッド
コンテキストマネージャで耐障害性を高める

12章 部分型

継承する場合はリスコフの置換原則に従う
継承を使う理由はis-a関係をモデリングすること
そうでないならコンポジションにするべき

13章 プロトコル

構造的部分型(オブジェクトが持っているプロパティ)のチェック
Protocol

14章 pydanticによる実行時型チェック

pydantic
組み込みバリデータ
カスタムバリデータ
型を厳密にしたい場合はstrictフィールドを使う

第III部 大規模な変更への対応

15章 拡張性

開放閉鎖の原則
実践しすぎると可読性が下がる

16章 依存関係

依存関係可視化ツール
pipdeptree,graphviz,gprof2dot,pyan3

17章 コンポーザビリティ

ポリシーとメカニズムを分ける
デコレータ

18章 イベント駆動アーキテクチャ

Pub/Subアーキテクチャ
Observerパターン
pypubsub
ストリーミングイベント
rx

19章 プラガブルPython

TemplateMethodパターン
Strategyパターン
プラグインアーキテクチャ
stevedore

第IV部 セーフティネットの構築

20章 静的解析

pylint,mccabe
セキュリティ解析
dodgy
bandit

21章 テスト戦略

テストピラミッド
AAAテスト
テーブル駆動テスト
pytest,pyhamcrest

22章 受け入れテスト

振る舞い駆動開発
vehave

23章 プロパティベーステスト

hypothesis

24章 ミューテーションテスト

テストのテスト
mutmut

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1