私は現在、完成したときにいくつかのツールで使用されるかなり大きな静的ライブラリを開発中です。このプロジェクトは、これまで関わってきたどのプロジェクトよりもやや大きいので、プロジェクトの適切な構造を考える時期に来ていることに気付きました。名前空間の使用は、論理的な手順の 1 つです。
私の現在のアプローチは、ライブラリをパーツに分割することです (スタンドアロンではありませんが、その目的はそのような分離を必要とします)。私は、いくつかの非常に一般的な typedef と定数 (ライブラリのさまざまな部分で使用される) を保持する「コア」部分を持っています。他の部分は、たとえば、いくつかの「ユーティリティ」(ハッシュなど)、ファイル i/o などです。これらの各部分には、独自の名前空間があります。「utils」の部分をほぼ完成させましたが、私のアプローチがおそらく最善ではないことに気付きました。問題 (そう呼びたい場合) は、'utils' 名前空間で、'core' 名前空間から何かが必要であり、その結果、コア ヘッダー ファイルと多くの using ディレクティブが含まれることになります。
それで、これはおそらく良いことではなく、何らかの方法で変更する必要があると考え始めました。私の最初のアイデアは、ネストされた名前空間を使用して、core::utils のようなものを作成することです。これにはかなりのリファクタリングが必要になるため、まずここで質問したいと思います。どう思いますか?これをどのように処理しますか?またはより一般的に: 名前空間とコード編成の観点から静的ライブラリを正しく設計する方法は? それに関するガイドラインや記事がある場合は、それらもメントインしてください。ありがとう。
注: 1 つだけでなく、より多くの優れたアプローチがあることは確かです。アイデアや提案などを自由に投稿してください。私はこのライブラリを設計しているので、本当に良いものにしたいと思っています。目標は、できるだけクリーンで高速にすることです。唯一の問題は、多くの既存のコードを統合してリファクタリングする必要があることです。これは本当に骨の折れるプロセスです (ため息) - だからこそ、優れた構造が非常に重要です)