私の会社が作成したソフトウェアは、いくつかのレイヤーを持ち、2 つのプロジェクトに分かれています。「内側のレイヤー」は HAL レイヤーであり、私たちが製造するハードウェアのドライバーと直接やり取りします。これは、「xxxHAL」という Visual Studio プロジェクトにあります。このプロジェクトは、静的ライブラリに組み込まれています。他のレイヤーが一緒になってクライアント API を形成します。これらの「他のレイヤー」は、独自の個別の VS プロジェクトにあり、HAL lib ファイルを最初から静的にリンクします。それらは、クライアントが独自のソフトウェアを構築できるように、配布する DLL に組み込まれます。
私の質問:
HAL 関数を独自の静的ライブラリに分離する動機は何ですか?
これらすべての HAL 関数をグローバル名前空間に配置するのはなぜですか? これは OOP パラダイムにどのように適合しますか?
2 つのプロジェクト セット全体は、古い API をゼロから最近再設計したものであり、非常に系統的に構築されています。API の設計は非常にオブジェクト指向であり、少なくともかなりよく設計されているように見えます。エンドユーザーにとっては非常に使いやすく明快なので、API ユーザー側のソフトウェアをこのように構築する動機は理解できます。私が主に感じているのは、ソフトウェアを一から設計していたら、別のアプローチを取っていただろうということです。何かご意見は?