と書くと色々物議を醸すことが多いのですが、本当にそう思う出来事があったのでメモ代わりに記事にします。
私の趣味であるゲーム攻略での出来事なのですが、既存のツールをベースに新たなツールを作ろうと思い、ツールの開発者の方にソースを見せてもらいました。
しかし、そのソースはバリバリの手続き型で書かれており、新たなツールに再利用するのが困難なものでした。
キャラクターのステータスを計算するツールがあったとして、画面上の入力からステータスの計算結果を単に画面に出すだけでなく、内部で「キャラクターオブジェクト」を作っていれば、色々と再利用の夢が広がります。
例えば、「キャラクターオブジェクト」を集めてパーティを疑似的に再現する、攻撃側の「キャラクターオブジェクト」と防御側の「キャラクターオブジェクト」を用意してダメージ計算ツールを作る、等です。
オブジェクト指向の入門書を読むとよく「現実世界を正しく捉える」というキャッチコピーが出てくるのですが、これは現実世界を正しく捉えること自体に意味があるのではなく、再利用性や影響範囲の限定を考えると自然とそうなる、「現実世界を正しく捉える」は目的ではなく手段である、と思いました。
前述の例でも、入力から出力を求める手続きの世界ではなく、現実世界をオブジェクトを利用して表現する世界でソースを書いていれば、自然と再利用が可能なものになったはずです。
なお、当該のツールについては、私が再利用可能なものを一から作ろうと思いました。
オブジェクト指向を実践から学ぶ良い機会にもなりそうなので。