
218
7 章 純粋性、不変性、変更ポリシー
このようにメソッドを使用することは、オブジェクト指向プログラミングの否定で
はありません(実際は、補完関係にあります)。関数型スタイルでは、どのような型
のデータが流れているかということよりも、関数の動作に注目します。あなた自身や
このコードの使用者が関数抽象を利用することができ、実装者が既存のコードを破壊
することなく内部構造の変更に集中できるようにしています。
7.4
変更コントロールのポリシー
一度現実に戻りましょう。コードから必要のない変更や副作用をすべて排除できれ
ばすばらしいことですが、何らかの状態を変更することが必要な時が絶対に訪れま
す。そのような変更をできる限り小さくするための方法を考えることを助けとなるこ
とが私のゴールです。例えば、プログラムの生存期間中にオブジェクトが生成されそ
して変更される場所の依存関係をグラフで表した小さなプログラムを想像してみてく
ださい。
図 7-3 変更の網が存在すると、どのような変更であってもグローバルに影響する可能性を持つ
図
7-3
は本章で以前に登場しているため、見覚えがあるはずです。可変オブジェク
トを渡して、それをその関数で変更し、そして他のメソッドやグローバルスコープで
も変更する場合、変更されたオブジェクトに関連した変更の影響が、実質的にプログ
ラム全体にわたるまでになってしまいます。もし、決まった値を期待している関数を
追加する場合はどうでしょうか? もしそのオブジェクトを微妙に変更するようなメ ...