フリーゲーム・フリーソフトの開発過程を記録していく、TDtechnic公式ブログです。製品はカテゴリの「ダウンロード場」からダウンロードして頂けます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

こんにちは。今日は概念的な話です。

プログラミングは「イベントドリブン型」と「手続き型」に分けられるとしばしば言われます。厳密にはこれらは対照される関係ではないらしいですが、ここでは「状態変化の瞬間に注目した設計」と「その時の状態に注目した設計」と捉えましょう。

例えば、キーボード入力について考えてみましょう。イベントドリブンの代表とも言えるWindowsプログラムでは、これらは「キーが押されたよ!」「離されたよ!」というような「メッセージ」として送られてきます。そしてプログラマーはそれに対応する処理を書くのです。OpenGL用ライブラリ「GLUT」などもこの形式です。
対してDirectInputは、あくまで「その時キーが押されているか」という形式で取得する仕様です。言い方を変えれば、好きなときにキーの状態を知れるというわけです。

イベントドリブンは、「操作→処理」の対応関係が明確であるという利点があります。しかし、処理どうしに関連性がある場合(例えば、処理Aは処理Bが終わった後に実行されることを前提としている場合)、一箇所でも対応漏れがあると(処理Bをしなくても処理Aが実行出来てしまう操作が存在すると)辻褄が合わなくなりがちです。つまり、その処理をするときにどういう状態になっているかというのは保証しにくいのです(これが原因とみられるバグを持つプログラムをいくつも見ています…)。

手続き型は、処理の流れがほぼ一本にまとまっています。その中でいじったものしか変化するはずないので、実行時の状態を把握しやすいメリットがあります。しかし、実行される可能性がある処理全てを一つにまとめるため、操作と処理の対応がわかりにくく、また実行するものとしないものの区別に大量のフラグが必要となります。つまり、こちらはある「瞬間」を捉えるのが面倒なのです。

どっちがいいのでしょう?不死女にも迷いがありました。そして下された一つの結論は…

どっちも使えばいいじゃない。

得手不得手があるなら、適材適所にすべきなのです。どっちか一辺倒になるとやっぱり無理が出ます。ここをゴリ押しでやるか立ち止まるかTPO次第ですが、不死女は趣味兼プログラミングの勉強なのでゆっくり考えていきます。ちょうどこの間作ったデリゲートはイベントドリブンの実装に最適です。また手続き部分には従来のシステムを使っていけば良いのです。仲良く共存させて、より適したプログラムを目指します!
関連記事

[2015/02/24 13:41] | 不死女 -Immortal girl-
|
コメント:
この記事へのコメント:
コメント:を投稿
URL:

パスワード:
非公開コメント: 管理者にだけ表示を許可
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。