12章部分型
これまでの第Ⅱ部の内容は、独自のデータ型の作成とインタフェースの定義に重点を置いてきた。しかし、データ型はそれぞれ独立した形で存在するのではなく、互いに関連することが多い。すでに、データ型が他のデータ型をメンバとして使うコンポジションは示した。この章では他のデータ型を基底として新しいデータ型を作る部分型について学ぶ。
部分型を適切に使えば、コードベースの拡張が驚くほど簡単になる。コードベースを壊さずに新しい振る舞いを導入できる。一方で、部分型を扱う際は注意が必要である。下手すると、思わぬ形でコードベースのロバストネスを損ねることになる。
まず、もっとも一般的な部分型である継承から説明しよう。従来、継承はオブジェクト指向プログラミング(OOP)の支柱とみなされている†1。継承は正しく適用しないと面倒なことになる。次に、別の部分型に移る。また、SOLID原則の1つであるリスコフの置換原則についても学ぶ。この章は部分型が適切なのはいつ、どのような場面か、適切ではないのはどの場面かを理解するのに役に立つ。
[†1] オブジェクト指向プログラミング(OOP)は、データとその振る舞いをカプセル化したものを中心としてコードを組織していくというプログラミングパラダイムである。OOPの解説書を読みたい読者には、Brett McLaughlin, Gary Pollice, and Dave West, Head First Object-Oriented Analysis and Design, O'Reilly. 邦訳『Head Firstオブジェクト指向分析設計』(オライリー・ジャパン、2007年)を勧める。
12.1 継承
部分型の話題となると、大半の開発者はすぐに継承を思い浮かべるだろう。 ...
Get ロバストPython ―クリーンで保守しやすいコードを書く now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.