From 10716ea6dd0b769ddda91cb4bb0defd0950df8a2 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 13 Jun 2017 19:09:59 +0200 Subject: [PATCH] Merge #10575: Header include guideline a090d1c Header include guideline (Pieter Wuille) Tree-SHA512: 44c46a3e249c946303b0fa45ddeba1abc40ec4f993b78f10894d6f43de2b62c493d74f8a24b5b69d3c71cd5c1b3cdb638c8eabdade3dc60e376bc933a8f10940 --- doc/developer-notes.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/developer-notes.md b/doc/developer-notes.md index 0be01417ef..d0f6e2773e 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -404,6 +404,14 @@ Source code organization - *Rationale*: Shorter and simpler header files are easier to read, and reduce compile time +- Every `.cpp` and `.h` file should `#include` every header file it directly uses classes, functions or other + definitions from, even if those headers are already included indirectly through other headers. One exception + is that a `.cpp` file does not need to re-include the includes already included in its corresponding `.h` file. + + - *Rationale*: Excluding headers because they are already indirectly included results in compilation + failures when those indirect dependencies change. Furthermore, it obscures what the real code + dependencies are. + - Don't import anything into the global namespace (`using namespace ...`). Use fully specified types such as `std::string`.