Я сгруппировал несколько строк сообщений в именованное (неанонимное) пространство имен в файле .cpp для вывода обработки класса, как видно из кода ниже:
namespace Messages
{
static const std::string AppTitle = "The Widgetizer - Serving all your Widget needs";
static const std::string SuccessMsg = "Great success! Widgets for all! ";
static const std::string FailMsg = "No widgets for you!";
};
void Display::printTitle()
{
out << Messages::AppTitle << std::endl;
}
void Display::printSuccessMsg()
{
out << Messages::SuccessMsg << std::endl;
}
void Display::printFailMsg()
{
out << Messages::FailMsg << std::endl;
}
Моя логика заключается в том, что таким образом они все находятся в одном центральном месте, под пространством имен со значимым и самодокументируемым именем, и они не подвергаются клиентскому коду (как было бы, если бы я поместил пространство имен в файле .h).
Это вообще хорошая практика или есть подводные камни, которых я не вижу?
Нужно ли статическое ключевое слово, если оно находится в пространстве имен области файла, как это?
С точки зрения передового опыта и принятой идиомы и стиля C ++, было бы лучше, если бы это было анонимное пространство имен? Или просто как статические члены класса const?
Я признаю, что это, вероятно, излишне для небольшой программы, которую я пишу, так как они, вероятно, будут использоваться только в этих функциях, но, вообще говоря, не жесткое кодирование строк сообщений - хорошая привычка, нет?