[ C++で開発 ]
パッケージに関する実装デザイン
もっともよく目にする構成で、実装デザインを何も考えないとこのディレクトリ構成になります。小さなプログラムであればこの構成でも耐えられますが、ちょっと大きくなったり、複数開発者で共同作業すると作業に非効率が発生し、品質が劣化します。
[project top] +--- [include] | a.h | b.h | : +--- [lib] | libaaa.so | libbbb.so +--- [src] a.cpp b.cpp : 注)ディレクトリ名には[]をつけている |
複数のパッケージから構成されるディレクトリ構成です。
プロジェクトのトップレベルで、各パッケージ毎にディレクトリを用意します。各パッケージ用のディレクトリの中に、パッケージを構成するすべてのファイルを収容します。
[project top] +--- [base] | +--- [include] | | base_a.h | | base_b.h | | : | +--- [lib] | | libbase.so | +--- [src] | base_a.cpp | base_b.cpp | : +--- [data] | +--- [include] | | : | +--- [lib] | | libdata.so | +--- [src] | : : 注)ディレクトリ名には[]をつけている |
パッケージの独立性が高いので、パッケージ毎に異なる組織(場所)で開発するなどに優位です。また、ファイルをリポジトリ管理している場合、開発に必要なディレクトリが固まっているので管理がしやすいなどの優位もあります。
プロジェクトのトップレベルは、シンプルなディレクトリ構成と同様ファイルの種類別ディレクトリですが、それぞれの種類別ディレクトリの下にパッケージ毎のディレクトリを設けます。
[project top] +--- [include] | +--- [base] | | base_a.h | | base_b.h | | : | +--- [data] | | data_a.h | | data_b.h | : : +--- [lib] | +--- [base] | | libbase.so | +--- [data] | | libdata.so | : : +--- [src] +--- [base] | base_a.cpp | base_b.cpp | : +--- [data] | data_a.cpp | data_b.cpp : : 注)ディレクトリ名には[]をつけている |
パッケージ分割しているものの、全体が割と一枚岩で設計されている場合、ビルド設定ファイル(Makefile等)の記述が楽になります。が、保守性は少々低下します。