Thread (4 messages) flat view 4 messages, 3 authors, 2016-06-15

Re: [PATCH] Documentation/CodingGuidelines: improve header includes rules

From: Christian Couder <hidden>
Date: 2016-06-15 22:46:36

Le mercredi 15 avril 2009, Jeff King a écrit :
On Tue, Apr 14, 2009 at 12:34:33AM +0200, Christian Couder wrote:
quoted
	- The third one means that for example if we have "revision.h"
	that includes "diff.h" and "commit.h", then it's ok to include
	"revision.h" in a C file, only if at least one feature from
	"revision.h" is actually used in the C file.

	It is not ok to include "revision.h" if features from "diff.h"
	and "commit.h" are used but no feature from "revision.h" is
	used.
Why? I thought the guiding principle mentioned earlier was "don't waste
programmers' time figuring out what should and shouldn't be included".

Sure, I would not expect somebody to include a header that is totally
unrelated, but it seems that most of the source files lazily include
cache.h just to get "everything".
The third rule is:

+ - After the first #include in a C file, only header files containing
+   features that are actually used in the C file should be included.
+   (This means that it is not ok to include an header file only
+   because this header file includes other header files with features
+   that are used in the C file.)

So this rule is only for #include after the first one, and "cache.h" should 
be the first one if it is included.

I added this rule because we need a little sanity too and it can be 
misleading to see an include of some feature when in fact no features from 
the include are used.
Stripping unnecessary includes doesn't even speed up compilation, as our
Makefile overspecifies the header dependencies anyway.
Perhaps the dependencies will not be overspecified one day, and I think it 
should at least speed up a little bit compilation of the C file where 
unnecessary includes have been stripped. And anyway it looks simpler and 
does not mislead into thinking that some feature are used when they are 
not.

Best regards,
Christian.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help