[ 
https://issues.apache.org/jira/browse/DISPATCH-836?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17313951#comment-17313951
 ] 

Jiri Daněk commented on DISPATCH-836:
-------------------------------------

[~chug] What do you think about this? The example does not have a header file 
for this .c file, but if it was there, it would be directly below #include 
Python in the After section.
h3. Before
{noformat}
#include <Python.h>
#include <qpid/dispatch/alloc.h>
#include <qpid/dispatch/ctools.h>
#include <qpid/dispatch/log.h>
#include <memory.h>
#include <inttypes.h>
#include <stdio.h>
#include "entity.h"
#include "entity_cache.h"
#include "config.h"

#ifdef QD_MEMORY_DEBUG
#include <execinfo.h>
#include "log_private.h"
#endif
{noformat}
h3. After
{noformat}
#include <Python.h>

#include <inttypes.h>
#include <memory.h>
#include <stdio.h>

#include <qpid/dispatch/alloc.h>
#include <qpid/dispatch/ctools.h>
#include <qpid/dispatch/log.h>

#include "config.h"
#include "entity.h"
#include "entity_cache.h"

#ifdef QD_MEMORY_DEBUG
#include <execinfo.h>

#include "log_private.h"
#endif
{noformat}
It is produced by the following config
{noformat}
BasedOnStyle: Google
[...]
IncludeCategories:
  - Regex: '^<Python.h>$'
    Priority: -1
  - Regex: '^<qpid/.*\.h>'
    Priority: 3
  - Regex: '^<.*\.h>'
    Priority: 1
  - Regex: '^<.*'
    Priority: 2
  - Regex: '.*'
    Priority: 4
{noformat}

> Source file organization suffers from include hell
> --------------------------------------------------
>
>                 Key: DISPATCH-836
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-836
>             Project: Qpid Dispatch
>          Issue Type: Improvement
>          Components: Container, Router Node, Routing Engine
>    Affects Versions: 0.8.0
>            Reporter: Charles E. Rolke
>            Priority: Minor
>             Fix For: Backlog
>
>
> Adding an innocent looking #include to some module may unleash a barrage of 
> errors instead of simply defining the header's interface. Reordering and/or 
> adding more #include statements is required to get it right.
> A good way to address this is to make certain that each module.h file 
> compiles cleanly on its own. It is tedious and pretty unrewarding to check 
> each file. One strategy to address this problem is for each module to 
> _#include module.h_ as the first include\[1\]. Then every compile checks that 
> the module.h files compiles cleanly. This strategy is recommended by 
> astitcher and used by qpid-cpp with great results.
> \[1\] One exception to this rule is including the #include Python.h ahead of 
> all others. This is a requirement.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to