Practical Python Design Patterns - The Factory Pattern 編
Summary(ファクトリーパターン: まとめ)
ソフトウェアの開発に携わる場合、将来起こり得るであろう全ての可能性に対処できるようにしておかなければ、という強迫観念にあまり囚われたくはないものです。もちろん「先を見越して」の開発は大切なことではありますが、将来必要となるであろう「全て」に対処できる「ジェネリック (generic)」なソフトウェアを構築しようという試みは、大体において「無益な練習」に終わってしまいます。そうなってしまう最も簡単な理由は、世の中と同様ソフトウェアも将来的にどのようになっていくのかをはっきりと見通す術がないからです。
ただし、先のことなど考えず目先の目的だけを果たせば良い、などと言っているわけではありません。新たな機能を追加しコードを進化させていくことができる能力は、ソフトウェア開発者としてあなたが学ぶべき最も重量なスキルの1つです。コードを「正しいもの」にするために、以前記述したものをすべて捨て去って1から作り始めよう、という誘惑には常に駆られますね。でもこれはただの「幻想」です。「正しいもの」を作り上げるために1から始めた途端、何やら「よろしくない」新たなものが出現します。そこでまた1から作り始め...、果たしていつ「正しいもの」にたどり着くのでしょうか?
一般に言われている原則 (general principle) は YAGNI です; ソフトウェア開発者としてキャリアを積んできた人であればこの「略語」とどこかで出会ったことがあるでしょう。これは 'You ain't gonna need it!' の頭字語で、直訳すれば「たぶんそれはいらないよ」ということになります。これの意味するところは、現在直面している問題を「より良く」処理するためのコードを書こう、そして、他の問題が生じたらその時初めてその問題を解決するためのコードを考えよう、というものです。
多くのソフトウェア開発において、まずは単純なファクトリーメソッドが採用されることが多いのはこれが理由です。そして開発途中でより柔軟な実装を行う必要性が生じた場合にのみ、抽象ファクトリー (abstract factory)、プロトタイプ (prototype)、ビルダー (builder) といったパターンを使用してプログラムを進化させるのです。
コメントを追加する(不適切と思われるコメントは削除する場合があります)