開発じたばた日誌

前へ●●●次へ
じたばた日誌目次へ戻る
TSUCHY Softへ戻る


FileSum Doc-View編


 Document-Viewってすごくわかりにくいですね。FileSumの場合、まずMainFrame君(親ウィンドウ)、 View君(ツリー表示部分)、Doc君(内部データ)、そしてスプリッタの右側のView君(グラフ表示部分)のよつどもえです。

 四人は「独立性」の名の下に仲が悪くて、お互いにアクセスするのがとても面倒です。 特にDoc君がView君やMainFrame君に働きかけるのがとても面倒です。 これを作った頃、View君がMainFrame君に働きかける時、GetParent()を使えばいいと知らなくてとても苦労しました。

 おまけにこれらが誕生するときはCSingleDocTemplateなるものの世話を受けて生まれてきます。 なんじゃ!!!こりゃああ!!このCSingleDocTemplateってやつはよお!!! MFCはこれらを私の知らない秘密のルートで結びつけています。彼らはこっそりとお話をするらしいのですが、 私には聞こえてきません。そしてその鍵をCSingleDocTemplateが握っているらしいのです。

 ウィザードの作り出すMFCのDoc-Viewのコードは、これ以上なんの追加もしない役立たずのアプリを作るには最高です。 でもなにか面白い機能をつけるときはワケワカメです。

 Doc-Viewは嫌いだけど、メッセージという機構は大好きです。 たとえばC++のメンバー関数を使おうとすると、相手のクラスがどんなものか知らないと使えません。 でもメッセージという回線を使うと、相手がどんな野郎か全く知らないでお話できます。  たとえばあなたがある人と直接あって仕事を頼もうとすると、相手がどこにいて、どんな顔をしているか わかっていないといけません。でも「電話」という回線を使うと、相手がどんな人か知っている必要は全くありませんね。 私の持っているメッセージというイメージはこんなものです。

 そして相手を知らなくてもいいというのはすごいことなのです。メッセージを送るだけなら相手のクラスを定義した ヘッダファイルをインクルードしなくていいのです。相手のクラスの構造にがんがんに依存したコードはあまり格好いいものでは ないと私は考えています。 メッセージ機構はメッセージと言う極めて細い一本の線だけで相手と接触していればそのほかはお互いに完全に独立した 存在でいることができます。

 独立したクラスで構成されたアプリ。何という美しく完璧な存在なのでしょう。 メンバー関数を使いまくったら、関数名を変更しただけでコンパイルが通りません。 関数を追加したら、関連する部分を全てコンパイルし直しです。でも独立していたら自分が勝手に変更してもそんなことは不要です。

 今回はビールを飲み過ぎて不可解な文章が多かったかもしれません。許してね。