オブジェクト指向

 たまにはプログラマーっぽい話でもしましょうか。とはいえ、あくまで趣味プログラマーとしてのお話です。
 オブジェクト指向というのはWikipediaによれば「オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方」だそうで、まあ、プログラムや、システムの設計をする人なら必ず耳にする言葉なんじゃないかと思います。難しい話はさておいたとして、プログラムにおけるオブジェクト指向といえば「カプセル化」「継承」「ポリモフィズム」とか「再利用性」などというキーワードがあるわけですが、趣味プログラマーとして大事だなって思うのは、一つの機能を追加したときにどれだけ少ないコード量でそれを実現できるか、ということかなって思います。なにしろ一人で作るんですからね。

 今熱意製作中のCloCalXにしてもそうですが、最初のCloCal、CloCal Proなんかは全然そんなことを考えずに作って、ひたすら思いつくままに機能を追加し、ひたすら肥大化していきました。そこで、Pantherになったのを機に、再び全体の構成を見直して(機能的な要求としてはおおまかには洗い出せていたので)、それっぽい設計もしてみたわけです。(このときは「カプセル化」と「継承」がメインかな。。。お互いを知らなくても、自分で勝手に動いて、しかも全体としては協調している、と。)
 しかしながら、それも日が経つにつれ(本業のおかげで、自分の設計技術も進歩してますし)まだまだ未熟な設計だったなあ、と思うようになりまして、1.0b8にてもう一度大掛かりなリファクタリングをかけたのでした。テーマは「新しく実現され多機能をいかに楽に既存のシステムに組み込むか」という感じで。(デザインパターンとかも、使えるところは積極的に利用)
 今回1.0b8実装予定のホットキーの仕組みなんかはまさにそういうつもり。

 とはいえ、こういうのって見た目に派手じゃないから、普通に使っているぶんには、何も変わらんのですけどね。