0

私は、Mac OSX Snow Leopard でマイクロコントローラーをプログラミングするための単純な Cocoa IDE を開発するという個人的なプロジェクトに着手しました。プログラミングは問題ではないので、アプリケーションの高レベル ブロックを設計するためのアーキテクチャを選択するのに多少の困難があります。私は考えていました:

  1. ユーザーが新しいプロジェクトを作成するときに XCode が行うことと同様に、プロジェクトの詳細を設定する可能性があります。おそらく、ユーザーのデフォルトまたは plist に保存される可能性のあるプロジェクトの詳細のアクセサリ ビューを含める可能性があります。
  2. アプリが所有する特定の拡張子を持つカスタムの特定のファイルタイプでプロジェクトを保存する可能性があります (ドキュメントベースのアプリ)。
  3. プロジェクトに新しいファイルを追加する可能性があります。特に、コンパイルのために自動的に含まれる h ファイル ヘッダーです。新しいファイルを選択するときに、ファイルの種類を選択できるようにする (XCode と同様)。
  4. たとえば、構文の色分け、チェック、強調表示のない、テキストビューベースのシンプルなエディターを用意します。NSScannerただし、たとえば、 を介して、構文の色付け/チェックの将来の開発を可能にするような方法で設計する。
  5. 選択した永続化方法に基づいて、コンパイル用の Makefile を自動生成する可能性があります。
  6. stdoutまたは他のより良いアプローチ を介して、コンパイラの冗長性をログ ビュー (テキスト ビュー?) に記録する可能性があります。
  7. NSOutlineViewファイルの参照にツリー コントローラー (たとえば) を使用する (左側のペインにある XCode のプロジェクト ファイルと同様) 。
  8. たとえば、プロジェクトをフォルダーのようなプロジェクト ファイルにパッケージ化しますNSFileWrapper(これには、main.c ファイル、追加のヘッダー、自動生成された Makefile、プロジェクト設定の plist などが含まれます);
  9. アプリケーション共有シングルトンを介してプロジェクト設定とアプリケーション設定を使用して設定を永続NSUserDefaults化する (たとえば)。
  10. モデル コンポーネントのいくつかのクラスを使用してマイクロコード コンパイラに接続し、NSTaskコンパイルとアップロードの結果をログ テキスト ビューに表示します。

私よりもはるかに経験豊富な方がそのようなプロジェクトに着手するとしたら、どのアーキテクチャ コンポーネントを選択しますか? 同じ (分割ビュー、テキスト ビュー、NSTaskファイル ラッパー、ツリー コントローラーを使用したアウトライン ビュー、ドキュメントからアプリ デリゲートを分離し、ドキュメント コントローラーの共有インスタンスなど)、または別のアプローチを選択しますか? はるかに単純なものですか?

これに関するヒントをいただければ幸いです。お時間をいただきありがとうございます。興味のある方がいらっしゃいましたら、進捗状況をお知らせします。

4

1 に答える 1

0

ユーザーインターフェイスから始めましょう。ユーザーが IDE をどのように使用するかを考えてください。

Xcode 3 のように動作しますか? Xcode4? どちらかの簡略版?別の既存の IDE ですか? 大部分または完全にオリジナルの何か?

紙でもお気に入りの画像エディターでも、スケッチを描きます。さまざまなレイアウトを試してください。同じものをさまざまな方法でスケッチし、それらを比較します。

ユーザーが行う必要があるさまざまなことを考えてください。彼らはどのようにそれをしますか?ある方法は別のタスクを犠牲にして来ますか? その価値はありますか?

ユーザー インターフェイスがどのように機能するかを理解すると、モデルとコントローラーのレイアウトがそれに続くことがわかります。


少なくともいくつかはすでに検討されているようですので、具体的な項目をいくつか取り上げます。

  • たとえば、構文の色分け、チェック、強調表示のない、テキストビューベースのシンプルなエディターを用意します。ただし、たとえば NSScanner を介して、構文の色付け/チェックの将来の開発を可能にするような方法で設計する。

NSScanner を使用して C コードを解析するのは面倒です。使用できる適切なテキスト ビュー/構文カラーが既に存在する場合があります。私は、たとえば、自分でそのようなタスクに着手する前に、十分に徹底的な検索を行います. このようなものをゼロから作成する必要がある場合は、Clang で何ができるかを調べます

  • プロジェクトをフォルダーのようなプロジェクト ファイルにパッケージ化します。たとえば、NSFileWrapper を使用します (これには、main.c ファイル、追加のヘッダー、自動生成された Makefile、プロジェクト設定の plist などが含まれます)。

注意: NSFileWrapper は .svn ディレクトリを理解していませんでした。これは、2.x 時代の Interface Builder に対する大きな不満でした。彼らは何年も前にIBで修正しましたが、NSFileWrapperが修正されたかどうかはわかりません。

于 2011-06-20T12:14:42.060 に答える