Cでデザインパターン

最近友人と会話していて、

  • 「ぼくがすごいと思ったアプリはほとんどCで書かれている」
  • 「どれくらい違うの?」

と聞かれて、そういえば詳しく調べたことがなかったな、と思った。
また、以下のことを思い出した。
http://satoshi.blogs.com/life/2005/06/ajax.html

「Cではオブジェクト指向のプログラミングは出来ない」と信じているエンジニアがいまだに沢山いることは全く嘆かわしいことだ。「オブジェクト指向のプログラミング」は、設計姿勢・プログラミングスタイルに関わることであり、C++Javaと言った言語に依存しなければ出来ないものではない。つまり、Cでろうとアセンブラーであろうと、「オブジェクト指向のプログラミング」は可能なのだ。にも関わらず、組み込み系のプロジェクトで、Cコンパイラーしかない環境でプログラムを書かせようとすると、「C++で書かないとコードがスパゲッティ状態になってしまいます」などと甘ったれたことを言うエンジニアが多いので困ったものだ。

C++オブジェクト指向プログラミングをうまく表現出来る人を、僕はあまり知らない。
そして僕もあまり出来ていない。クラス化することがオブジェクト指向ではないだろう。
ただ、C++を使うメリットはいろいろあると思う。僕は以下の二つしか知らない。

  1. 継承を使ってif文を減らすことが出来る
  2. メンバ変数を持てると状態を操作する関数が簡単に作れる

一つ目。
もともとDELPHIでゲームを作っていて、異なる性質を持つキャラクタを出来るだけきれいなコードで書きたい、という思いがあって、それを調べたり質問したりするうちに教えてもらった。ソースコードとしては、SANDMANさんのExtreme Shootersだ。

二つ目はあとでちゃんと書きます。