Classes and class hierarchies
C.5
Размещайте вспомогательные функции в том же пространстве имён, что и поддерживаемый ими класс
Причина
Вспомогательная функция — это функция (обычно предоставляемая автором класса), которой не нужен прямой доступ к представлению класса, но которая рассматривается как часть полезного интерфейса класса. Размещение их в том же пространстве имён, что и класс, делает их связь с классом очевидной и позволяет находить их через зависящий от аргументов поиск.
Пример
namespace Chrono { // здесь хранятся сервисы, связанные со временем
class Time { /* ... */ };
class Date { /* ... */ };
// вспомогательные функции:
bool operator==(Date, Date);
Date next_weekday(Date);
// ...
}
Примечание
Это особенно важно для перегруженных операторов.
Контроль
- Помечать глобальные функции, принимающие типы аргументов из одного пространства имён.