diff --git a/dox/dev_guides/contribution/coding_rules.md b/dox/dev_guides/contribution/coding_rules.md index 88aae9e6be..7ee840af7a 100644 --- a/dox/dev_guides/contribution/coding_rules.md +++ b/dox/dev_guides/contribution/coding_rules.md @@ -70,6 +70,8 @@ The following extensions should be used for source files, depending on their typ * .hxx -- C++ header files * .lxx -- additional headers containing definitions of inline methods and auxiliary code +Note that .lxx files should be avoided in most cases - inline method should be placed in header file instead. + ### Prefix for toolkit names [MANDATORY] Toolkit names are prefixed by *TK*, followed by a meaningful part of the name explaining the domain of functionality covered by the toolkit (e.g. *TKOpenGl*). @@ -470,22 +472,29 @@ Spaces at the end of a line are useless and do not affect functionality. ### Headers order Split headers into groups: system headers, headers per each framework, project headers; sort the list of includes alphabetically. +Within the class source file, the class header file should be included first. This rule improves readability, allows detecting useless multiple header inclusions and makes 3rd-party dependencies clearly visible. +Inclusion of class header on top verifies consistency of the header (e.g. that header file does not use any undefined declarations due to missing includes of dependencies). + +An exception to the rule is ordering system headers generating a macros declaration conflicts (like "windows.h" or "X11/Xlib.h") - these headers should be placed in the way solving the conflict. ~~~~~{.cpp} -// system headers -#include -#include - -// Qt headers -#include -#include +// the header file of implemented class +#include // OCCT headers #include #include #include + +// Qt headers +#include +#include + +// system headers +#include +#include ~~~~~ @section occt_coding_rules_4 Documentation rules