0

私の会社が作成したソフトウェアは、いくつかのレイヤーを持ち、2 つのプロジェクトに分かれています。「内側のレイヤー」は HAL レイヤーであり、私たちが製造するハードウェアのドライバーと直接やり取りします。これは、「xxxHAL」という Visual Studio プロジェクトにあります。このプロジェクトは、静的ライブラリに組み込まれています。他のレイヤーが一緒になってクライアント API を形成します。これらの「他のレイヤー」は、独自の個別の VS プロジェクトにあり、HAL lib ファイルを最初から静的にリンクします。それらは、クライアントが独自のソフトウェアを構築できるように、配布する DLL に組み込まれます。

私の質問:

  • HAL 関数を独自の静的ライブラリに分離する動機は何ですか?

  • これらすべての HAL 関数をグローバル名前空間に配置するのはなぜですか? これは OOP パラダイムにどのように適合しますか?

2 つのプロジェクト セット全体は、古い API をゼロから最近再設計したものであり、非常に系統的に構築されています。API の設計は非常にオブジェクト指向であり、少なくともかなりよく設計されているように見えます。エンドユーザーにとっては非常に使いやすく明快なので、API ユーザー側のソフトウェアをこのように構築する動機は理解できます。私が主に感じているのは、ソフトウェアを一から設計していたら、別のアプローチを取っていただろうということです。何かご意見は?

4

1 に答える 1

0

HAL 関数を独自の静的ライブラリに分離する動機は何ですか?

その名前は、すべてハードウェア抽象化レイヤーを示しています。
プロジェクト内の他のソフトウェア コンポーネントをハードウェアから切り離します。
この疎結合により、異なるハードウェア プラットフォーム間での移植が容易になります。
また、ソフトウェアの「他のレイヤー」が、ハードウェア ソース コードのソース コードの変更から抽象化されたままであることを抽象化します。

于 2012-02-01T05:02:40.630 に答える