On 5/25/12, Jakub Jelinek <ja...@redhat.com> wrote:
> On Fri, May 25, 2012 at 10:15:54AM -0400, Diego Novillo wrote:
> > Lawrence, Ian and Gaby have been working on the proposed coding
> > guidelines for C++ (http://gcc.gnu.org/wiki/CppConventions).
>
> That page is quite inconsistent.  E.g. it first talks about
> retaining space before ( (which I really hope will be retained,
> it makes code more readable), but in the example it doesn't
> bother with it.  And the long line example is horribly ugly,
> ending line with ( ?  That ( should surely go on the next line
> after the few spaces.  It should list also examples of when the
> first parameter isn't too long, but there are too many parameters
> and so some wrapping is needed, etc.

We will clean the page.

There are technical guidelines that we can, and I think should,
apply to the coding convention.  In particular, I believe any coding
convention should be consistent with the grammar of the language.

Both the GNU style and the C++ Standard style break that guideline
in different respects.  For example, consider the following GNU code.

    int *p = *foo (3);

Here, the convention implies that foo binds more tightly to the *
than it does to the (.  This implication is false.

Now consider the C++ Standard equivalent.

    int* p = *foo(3);

It fixes the binding of foo, but implies that * is syntactically
closer to int than it is to p.  That implication is false.

Now consider a form that is consistent with the actual grammar of
the language:

    int *p = *foo(3);

Here there is no implication that foo binds more closely to either
the * or the (, so the form is consistent with the grammar.

We can go further and have the spacing reinforce the grammar, but
lines will get longer.

-- 
Lawrence Crowl

Reply via email to