From: Christian Couder <chriscool@tuxfamily.org>
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>,
git@vger.kernel.org,
Nathaniel P Dawson <nathaniel.dawson@gmail.com>,
Johannes Sixt <j.sixt@viscovery.net>,
Nanako Shiraishi <nanako3@lavabit.com>
Subject: Re: [PATCH] Documentation/CodingGuidelines: improve header includes rules
Date: Thu, 16 Apr 2009 07:10:28 +0200 [thread overview]
Message-ID: <200904160710.28473.chriscool@tuxfamily.org> (raw)
In-Reply-To: <20090415075819.GC23332@coredump.intra.peff.net>
Le mercredi 15 avril 2009, Jeff King a écrit :
> On Tue, Apr 14, 2009 at 12:34:33AM +0200, Christian Couder wrote:
> > - 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.
prev parent reply other threads:[~2009-04-16 5:13 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-13 22:34 [PATCH] Documentation/CodingGuidelines: improve header includes rules Christian Couder
2009-04-14 16:24 ` Johannes Schindelin
2009-04-15 7:58 ` Jeff King
2009-04-16 5:10 ` Christian Couder [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200904160710.28473.chriscool@tuxfamily.org \
--to=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j.sixt@viscovery.net \
--cc=nanako3@lavabit.com \
--cc=nathaniel.dawson@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).