2

特定の SDK 用のツールを使用するかどうかについての議論が発生する状況に遭遇しました。

目標: サード パーティの開発をより適切にサポートするために、既存の IDL の上に OPCUA プロバイダー (コンプライアンスが必要) を開発する。

オプション:

  • SDK で提供されたモデリング ツール (GUI) を使用します (コンプライアンス テスト済みのコードを生成すると言われています)。モデルは非常に迅速に作成されます (ツールはユーザーフレンドリーではありませんが、少なくともいくつかのツールがあります)。ただし、このツールは細心の注意を払って使用しないとエラーが発生しやすいようです。(キャメルケースのエラーなど、コンパイルは不可能ですが、find + replaceで修正できます。説明内でTABSが使用されている場合(ドキュメントからコピーして貼り付けた場合)、奇妙な動作をします。使用されているデータ型が削除されている場合、型定義は空のままになります。すべてを見つけて生成されたコードを修正するのに 1 日か 2 日かかりました。) 出力は 170 個の .C および .H ファイルでした。これを手動で作成してリンクしたくはありません。

問題:モデルが変更されるたびに、コードが完全に再生成されます (もちろん、エラーや上書きの適応と修正を含む)。

  • Xtext を使用して独自のモデル記述言語を生成し、それを有効で準拠したコンパイル可能な C コードにコンパイルして、最後の状態がエクスポートされてから実際に変更されたファイルのみを生成するオプションを作成します。

問題:両方のメンテナンス: ジェネレーターと生成された製品は継続的なタスクであり、悪夢とよく言われます。

  • 最も基本的なファイルのみを自動的に生成し (A で説明したツールを使用)、残りは手動で行います。100% 必要でない場合は、生成されたファイルに触れないでください。したがって、上書きしても害はありません。

問題: A で言及されていますが、まだ残っていますが、1 桁小さい可能性があります。

内部で何が起こっているのかを知りたいのですが、すべてのコードを自分で書くと、コードを生成するよりもエラーが発生しやすくなります (数 100k LOC)。私が本当に必要だと感じているのは、モデルが変更されるたびにすべてをマージするための何らかの内部バージョン管理システムですが、エラーは発生しません。したがって、regExを使用して特定のパッセージを除外する、非常に強力なマージツールは素晴らしいでしょう...

誰かが同様の問題を経験したことがありますか、どのように解決しましたか? このような状況下で第三者が私のコードを安全に再利用できるようにするにはどうすればよいですか? 他の開発者向けの「ベスト プラクティス」マニュアルを作成するだけでよいでしょうか?

自分の懸念を上司に伝える良い方法はありますか? あきらめることは選択肢ではありません。

4

1 に答える 1

0

そのため、長い議論と多くの評価の後、いくつかのファイルを抽出することにしました。これらのファイルを変更して、これらのファイルにアダプターを挿入する必要があります。これらのファイルは反復ごとに新しく生成され、手動でマージされますが、マージするのはごくわずかな行だけです。

(アダプターは「アダプターパターン」を参照)

于 2013-09-17T06:43:09.010 に答える