Готовый перевод Google C++ Style Guide / Google C++ Style Guide: Names and Order of Includes

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

Используйте стандартный порядок для читаемости и избегайте скрытых зависимостей: библиотека C, библиотека C++, заголовочные файлы других библиотек, заголовочные файлы вашего проекта.

Пути ко всем заголовочным файлам проекта должны быть записаны относительно каталога с кодом проекта без сокращений . (текущий каталог) и .. (родительский каталог). Например, google-awesome-project/src/base/logging.h должен быть включен, как

#include "base/logging.h"

В dir/foo.cc или dir/foo_test.cc, чьи главные назначения — реализация или тест содержимого dir2/foo2.h, порядок включений должен быть следующим:

dir2/foo2.h (Желательное место - подробности ниже).

Файлы стандартной библиотеки C.

Файлы стандартной библиотеки C++.

заголовочные файлы остальных библиотек.

заголовочные файлы вашего проекта.

Собственный заголовочный файл модуля включается первым для того, чтобы в случае отсутствия требуемых зависимостей в файле dir/foo2.h сборка проекта остановилась на файлах dir/foo.cc или dir/foo_test.cc. Это правило гарантирует, что ошибка компиляции вылезет в первую очередь у человека, работающего над данными файлами, а не у стороннего разработчика, работающего над совершенно другими пакетами.

dir/foo.cc и dir/foo2.h часто находятся в одном каталоге (например, base/basictypes_test.cc и base/basictypes.h), но могут быть и в разных.

В каждой секции неплохо бы расположить включения в алфавитном порядке.

Например, включения в google-awesome-project/src/foo/internal/fooserver.cc могут выглядеть так:

#include "foo/public/fooserver.h" // Желательное место
#include <sys/types.h>
#include <unistd.h>
#include <hash_map>
#include <vector>
#include "base/basictypes.h"
#include "base/commandlineflags.h"
#include "foo/public/bar.h"

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/32830/114586

Переводчики: mayorovp, Dynorth

Настройки

Готово:

100.00% КП = 1.3