diff --git a/CODING_GUIDELINES.md b/CODING_GUIDELINES.md index 4e3137434..5e0f47a1e 100644 --- a/CODING_GUIDELINES.md +++ b/CODING_GUIDELINES.md @@ -232,36 +232,69 @@ class MyClass ``` ### 7. Header inclusion order. ### -The headers should be placed in the following order: - 1. Module header (in .cpp) - 2. System/Qt/Boost etc. headers (split in subcategories if you have many). - 3. Application headers, starting from *Base* headers. +The headers should be placed in the following group order: + 1. Module header (in .cpp) + 2. C++ Standard Library headers + 3. System headers + 4. Boost library headers + 5. Libtorrent headers + 6. Qt headers + 7. qBittorrent own headers, starting from *base* headers. + +The headers should be ordered alphabetically within each group. +If there are conditionals for the same header group, then put them at the bottom of the respective group. +If there are conditionals for the different header groups, then put them above of the "qBittorrent own headers" group. + +One exception is the header containing the library version (for example, QtGlobal), this particular header isn't constrained by the aforementioned order. -The headers should be ordered alphabetically within each group (subgroup).
-
Example: ```c++ -// examplewidget.cpp +// file: examplewidget.cpp +// Module header #include "examplewidget.h" -#include +// exceptions, headers containing version number +#include +#include +#include + +// C++ Standard Library headers #include -#include -#include +#ifdef Q_OS_WIN // conditional +#include +#endif + +// System headers +#ifdef Q_OS_WIN +#include +#endif + +// Boost library headers +#include + +// Libtorrent headers +#include + +// Qt headers #include #include -#include +#ifdef Q_OS_MAC // conditional +#include +#endif + +// conditional for the different header groups +#if LIBTORRENT_VERSION_NUM >= 10100 +#include +#include +#endif +// qBittorrent own headers #include "base/bittorrent/infohash.h" -#include "base/bittorrent/session.h" -#include "base/utils/fs.h" -#include "base/utils/misc.h" -#include "base/utils/string.h" +#include "anothermodule.h" #include "ui_examplewidget.h" - ``` ### 8. Include guard. ###