2

C++ でプログラムを書きたいのですが、どうすればよいかわかりません。依存関係のためにウィジェット ツールキットなどの特定のインターフェイスにユーザーをバインドしたくないため、コマンド ライン フロントエンドだけでなく GUI フロントエンドでも使用できるプログラムを作成したいと考えています。

これを行うにはどうすればよいでしょうか?RSync や SSH などの一部のプログラムには GUI のフロントエンドがあることは知っていますが、これがどのように行われるかはわかりません。System() を使用してすべてを実行するだけのプログラムを、きれいな GUI で実行するのはハックではないでしょうか?

4

4 に答える 4

7

プログラムのアルゴリズムをライブラリに実装し、UIを慎重に避けます。アルゴリズムへのAPIは、ヘッダーファイルで指定されます。

次に、このライブラリを使用する複数のアプリケーションを作成できます。1つはGUIフロントエンドを実装し、もう1つはコマンドラインインターフェイスを実装します。それらにはヘッダーが含まれ、APIに対してコンパイルされ、ライブラリをそれにリンクします。
一貫性のない設定でライブラリとGUIをコンパイルしないように注意してください。

IMEは、最初にコマンドラインUIを実装するときに、アルゴリズムをUIから分離するのに最適です。その分離のためにコールバックを採用しなければならないかもしれません。

于 2010-08-23T16:07:38.870 に答える
6

他の要件を知らなくても、最も簡単な答えは、「バックエンド」をライブラリとしてコンパイルし、それに対してさまざまな「フロントエンド」をリンクすることです。

より複雑な答えには、バックエンドをデーモン/サーバーとして設定することが含まれます。

これを行うためにシステムコールは必要ありません(非常に具体的な要件がない限り)。

于 2010-08-23T16:06:46.553 に答える
1

MVCデザインパターンに刺激を与えることができます。異なるフロントエンドは、モデルコントローラーのビューです。コントローラは、アプリケーションの一般的なタスクを考慮に入れるライブラリにすることができます。GUI部分とシェル部分(または別の言語統合部分など)はすべて、この「ヘッドレス」ライブラリを使用します。最初から明確に分離することは、モジュール性と分離を強化するのに役立ちます。

于 2010-08-23T16:09:17.517 に答える
0

GUIフロントエンドにQTを使用できます。しかし、実際には最初にライブラリを作成するだけです。次に、GUI を最後に実行します。

役立つアドバイス

  1. コードを書いている間に必ずユニットテストを書いてください。

  2. コードを記述する際には、必ずコード カバレッジ ツールを使用して単体テストを評価してください。

  3. BOOL 型は通常、プラットフォーム API (win32 など) で定義されるため、避けるようにしてください。代わりにブールを使用してください。

  4. ヘッダー ファイルでできる限り多くの型を前方宣言します。各ライブラリ ヘッダー ファイルに含めるヘッダー ファイルはできるだけ少なくします。

  5. 可能な限り最小限のインターフェイスを公開します。

  6. C++ の適切なコーディング プラクティスに従ってください。 Herb Sutters Book C++ コーディング標準は、この点で優れています。

  7. GUI を作成したら、GUI イベント ハンドラーに入れるビジネス ロジックはできるだけ少なくします。基本的に、ライブラリを GUI に依存しないようにする必要があります。他の誰かがここで MVC パターンについて言及しました。それは素晴らしいアドバイスです。

于 2010-08-23T16:19:31.760 に答える