Source files
SF.11
Заголовочные файлы должны быть самодостаточными
Причина
Удобство использования: заголовки должны быть просты в использовании и работать при самостоятельном включении. Заголовки должны инкапсулировать предоставляемую ими функциональность. Избегайте ситуации, когда пользователям заголовка приходится управлять его зависимостями.
Пример
#include "helpers.h"
// helpers.h depends on std::string and includes <string>
Примечание
Несоблюдение этого правила приводит к трудно диагностируемым ошибкам у пользователей заголовка.
Примечание
Заголовок должен включать все свои зависимости. Будьте осторожны при использовании относительных путей, поскольку реализации C++ расходятся в их интерпретации.
Контроль
Тест должен проверять, что сам заголовочный файл компилируется, или что cpp-файл, включающий только этот заголовок, компилируется.