定数 (特定の文字列や数値など) を中心点で定義することが望ましいです。コードの読みやすさを維持するために、これらの定数に簡単にアクセスできることも望ましいです。これを達成するための優れたプラクティスを調査しているときに、次の2つの解決策を見つけました( https://stackoverflow.com/a/9649425/2776093 )。
FoodConstants.h:
namespace FoodConstants {
namespace Fruits {
extern const string Apple;
...
}
...
}
FoodConstants.cpp:
namespace FoodConstants {
namespace Fruits {
const string Apple = "apple" ;
...
}
...
}
FoodConstants2.h:
class FoodConstants {
public:
class Fruits {
public:
static const string Apple;
...
}
...
}
FoodConstants2.cpp:
const string FoodConstants::Fruits::Apple = "apple"
...
どちらのソリューションでも、FoodConstants::Fruits::Apple を使用して、プログラム内の .h が含まれる任意の場所でリンゴ定数にアクセスできます。初期化は同じコンパイル単位で行われ、初期化の問題が回避されます。私は 1 つの違いに気付きました: 2 番目の解決策では、たとえば、"名前空間 FoodConstants を使用して" 文字列定数へのアクセスを Fruits::Apple に短縮することはできません。
他に違いはありますか?このような定数を整理するための好ましい方法はありますか?