著作一覧 |
そりゃやっぱりテンプレートメソッドパターンと今は名前がついてるやつを導出したときだ。
その時、思ったのは、構造化によってgotoが追放されたように(と言ってもbreakやcontinueとかで残っているのはご存知のとおり)、オブジェクト指向(構造化と比較すると確かにわかりにくい言葉だし、orientedというのが曲者みたいだ)ではifやswitchといった条件判断による分岐が追放されるんだろうな、ってことだった。
その時、作ってたのは、言語はTurboC++だったわけだが、端末エミュレータで、1.インタラクティブ(キー入力)、2.ファイル転送(送信側)、3.ファイル転送(受信側)、4.インタラクティブ(スクリプト)の4つのモードがあって、さらに下の層では、Winsock(PathwayまたはLanamanで微妙に互換性がない)か、RS-232C叩きかの3つの通信レイヤがあって、さらに端末もvt220かムニャムニャかの2つのモードがあって、さらに文字コードがEUCかMS漢字かムニャムニャJISの3つの選択肢があって、とかの組み合わせというやつ。
その前に、下はRS232Cだけど、ほとんど同様なやつで、ただし画面が9801のVRAMかAXのVRAMかムニャムニャのVRAMか、っていうようなのをTurboCでご多分に漏れず#ifdefとか使って作ってたのが、Win16で実行プログラムは1本で済むようになったから、さあ、#ifdefとか抜きで実行時に判断するぞ判断するぞ、とそんな感じで、いろいろいじっているうちに、デザインパターンで言うテンプレートメソッドパターンとファクトリパターンが浮かんできた。
もちろん粒度の問題があるから、ifなしではプログラムは書けないのだが、このあたりが僕のオブジェクト指向開発の原点だから、最初からオレ様MVCで自然にやってたという感じ。
if (provider == MS_WINSOCK) { ... } else if (provider == PATHWAY) { ... } else { // PORT hitter ... }とかが浮かんできてたのが
provider->send(buffer.get_binary());というように変わった。
BASIC認証はXSSに対して今や安全ではない(TRACE)->Public編 追補に入れる
FSM(僕はスティーブンスのTFTPの実装で名前は知ったが、それ以前から使ってた。状態遷移図をそのまま現在の状態値と入力値と新たな状態値を返す関数へのポインタに置き換えたもの)を使うようになってから、あまりswitchそのものは使わなかったけど、と意味無く追記。ただ、これも粒度の問題があって、端のほうでは当然使う。
なんて、無駄な書き込みができる程度には、余裕が出てきたりして。
その日のうちに帰れなきゃ、おかしいよな。
昼飯食いに行こうと外に出たら、交差点の向こうからベビーカーがやってきた(もちろんやって来るはずがない。が、母親のことをまったく見てなかったので、主観的にはベビーカーが勝手にやって来たのだ)。乗り手はまだ若いんだが、ぐっすり眠って(それは首の傾きからわかる)て、しかし左手を高々と上げている。ラッシャー。で、その手は固く握られている。
そうそう、そうだよ。で、時々開いて見ると、なぜか埃とかが入ってるんだよね。で、臭いの。お前は綿吹き虫か?
などと、思い出したので記録。
ジェズイットを見習え |