良くない設計指針:include "mycode.h"の指定にも設定用の変数を利用する


良くない設計指針:

C++で開発している際に、ソースコードのファイルの数が増えてくると、コードの管理が込み入ってくる。自分たちが開発しているソースコードのヘッダファイル(通常""で囲む)を相対パスで指定するのが次第にこみいったものになってくる。特に、ある一式と別の一式とで同じソースコードを共用させたいと思うと、コンパイラの設定用の変数を利用して、次のようなヘッダファイルへの相対的な配置情報を含めない方がいいかもと思うかもしれない。

#include "../someModule/module_A.h"
#include "../someModule/module_B.h"
#include "../nestedModule/moduleC/module_C.h"

そこで、CMakeLists.txtに記載してCMakeでMakefileやVisual Studioの設定を作ることができる。

CMakeLists.txt中の記述

include_directories(/path/to/include)

C++のソースコード中の記述

#include "module_A.h"
#include "module_B.h"
#include "module_C.h"

このようにして、C++のソースコード.cpp や.h、*.hppの中に、ユーザーコードのヘッダファイルがどのようなフォルダ構成で置かれているかという記述をしないことも可能ではある。

しかし、このようにしてはならない。
以下の指摘を受けたように、「includeの指定には設定用の変数を利用しよう」というのはよくない設計指針だということに同意します。

「よく設計されているものなら特に、名前空間とディレクトリ構造は一致しています。」
このように書き換えていかなくては。