パスワードを忘れた? アカウント作成
453130 journal

okuの日記: Re: MS WTL is open sourced. Is it worth to be ported to D ?

日記 by oku

From: "Achilleas Margaritis"
Newsgroups: digitalmars.D
Subject: Re: MS WTL is open sourced. Is it worth to be ported to D ?
Date: Sat, 15 May 2004 14:15:35 +0300
より:

WTL は何倍も腐っている。これは MFC と同じ原理に従っている。

  1. これは二段階の生成方法を使っている: 最初に C++ オブジェクトを生成して、次に「create」を呼んでウィンドウを生成する。オブジェクトを生成してからウィンドウを生成するまでの間、オブジェクトを使うことができない。
  2. メッセージマップを使っているが、これには多くの問題があり、特にマクロ地獄 (メッセージマップがマクロで実装されている) に陥る。 更に、これはオブジェクト指向原理に違反している: 例えスーパークラスのメソッドをオーバーライドしても、仮想メソッドが呼び出されない。 更に、呼び出されるメソッドに対応するコマンド ID ごとにメッセージエントリを一つずつ探すため、地獄のように遅い。 また、マクロであり型チェックが効かないため、安全ではない。
  3. ユーザが維持しないといけないコマンド ID を使っている。 マイクロソフト方式を使ったことのない人は、こいつを避けて欲しい! こいつは悪夢であり、Visual Studio がこれを壊して扱えなくなると、末端の哀れなプログラマは手作業で ID を直さなければならなくなる。
  4. オブジェクトであるべき多くのものがオブジェクトでない。 例えば、ツールバーボタンが ID として扱われている。 ツールバーにコンボボックスを入れようとすると、コンボボックスにかぶせる仮のボタンを入れなければならない。
  5. UI がモデル-ビュー-コントローラのパラダイムに従っていない。 UI の状態はメッセージループがアイドル状態になったときに更新される。 これはデバッグ上の問題を引き起こす。
  6. もう一つの string クラスを含んでいる。

WTL/MFC の悪夢はもっともっとある。 私が知っているのは、2000 年に始まった私の会社のアプリケーションがこれを使ってきて、現在も使っているからだ(もうすぐ終わるが、それは WTL/MFC の糞を避けるための私や同僚の英雄伝によるものだ)。

WTL の利点はあるだろうか? 小さいサイズのバイナリを生成できる。 これは本当に必要だろうか? 記憶空間 (永続、中間共に) はもはや今日では問題ではないし、オペレーティングシステムは未使用領域をスワップアウトする程度には十分賢い。

いいアーキテクチャを探したいのであれば、Java の Swing か Trolltech の Qt にしろ。

2004-05-17: 若干推敲

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり

読み込み中...