0

概要:複数の関連プロジェクトをサポートできるように、デポと開発環境をセットアップする方法を理解するための支援が必要です。

詳細: 今まで、プロジェクト A - ロボット バージョン A の 1 つのプロジェクトしかないデポがありました。

ハードウェアにいくつかの違いがある新しいバージョン (ProjectB) の作業を開始しています - I/O ポートのマッピングとタイマーが変更されました。両方のプロジェクトのコードを引き続き開発したいと考えています。

これは、ProjectB が一部のファイルを ProjectA と共有し、一部のファイルが異なることを意味します。

違いはHW関連の項目であるため、私が考えているのは、共通領域を作成し、次に、共通領域がデバイスに依存しないコード用であり、プロジェクト固有の領域がデバイス依存コード用である特定の領域をプロジェクトすることです。

違いが大きいので、ファイル内で #ifdef を実行したくありません。いくつかの違いは単純です - 異なる I/O ポート マッピングといくつかは完全に新しいモジュールです。

メンテナンスを容易にするために、デバイスに依存するコードの違いを比較し、選択した変更を反映できるようにしたいと考えています。

最後に、比較中の私の負担を最小限に抑えるために、将来の比較で表示されないように、問題ないとわかっている違いにマークを付けたいと思います。

ヘルプ!

4

1 に答える 1

1

あなたの本能は素晴らしいです。あなたはコードを複製しないようにしています。これが優れた設計とエンジニアリングの核心です。

ファイル レイアウトに関して言えば、ディレクトリが深すぎるといつもイライラしますが、浅すぎるよりはずっとましです。多分:

<root>
  main/
    projects/
       robot1/...
       robot2/...
       shared1/
       shared2/

(大規模なリポジトリは、それよりもはるかに深いです。)

共有コードの作成方法についてはsetup.h、さまざまな共有ライブラリの機能を駆動するさまざまなまたは定数.hを使用できます。または、実行時にパラメータ化されるように共有ライブラリを構築します。

SetupDrivers(0x80020); // address of PIO registers

最後に、プロジェクトが本当に異なる場合は、コードを共有することが本当に正しいことかどうかを判断してください。通常はそうですが、すべてが選択です。ファイルを手動で「比較」して違いを探したい場合は、構造を十分に近づけて比較するかどうかはあなた次第です。上記の「プロジェクトごとに異なるconfig.hファイル」のアイデアが役立ちます。

独自の diff ツールを (python などで) ロールする場合は、特別なコメントを使用して「予想される異なる行」にフラグを付けることができます。

于 2011-08-28T16:36:41.560 に答える