qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] CODING_STYLE: don't allow non-indented stateme


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH] CODING_STYLE: don't allow non-indented statements after if/else blocks
Date: Mon, 26 Oct 2009 22:20:34 +0200

On Mon, Oct 26, 2009 at 10:03 PM, Aurelien Jarno <address@hidden> wrote:
> On Mon, Oct 26, 2009 at 06:02:52PM +0200, Blue Swirl wrote:
>> On Mon, Oct 26, 2009 at 8:26 AM, Aurelien Jarno <address@hidden> wrote:
>> > Rationale: The following code is difficult to read, but allowed by the
>> > current coding style.
>>
>> Fully agree.
>>
>> > +Every control flow statement is followed by a new indented and braced
>> > +block; even if the block contains just one statement.  The opening brace
>> > +is on the line that contains the control flow statement that introduces
>> > +the new block; the closing brace is on the same line as the else keyword,
>> > +or on a line by itself if there is no else keyword.  Example:
>>
>> I think an exception should be granted for "else if" case, otherwise
>> the style would require braces around "if", like:
>>     if (a == 5) {
>>         printf("a was 5.\n");
>>     } else {
>>         if (a == 6) {
>>             printf("a was 6.\n");
>>         }
>>     } else {
>>         printf("a was something else entirely.\n");
>>     }
>>
>> Picking nits: "while" is a control flow statement, even in "do {}
>> while" statement and then it would illegal to require a braced block
>> after the "while" statement.
>
> Good point. Please find another try below:
>
> From: Aurelien Jarno <address@hidden>
>
> Rationale: The following code is difficult to read:
>
>    if (a == 5) printf("a was 5.\n");
>    else if (a == 6) printf("a was 6.\n");
>    else printf("a was something else entirely.\n");
>
> Signed-off-by: Aurelien Jarno <address@hidden>
> ---
>  CODING_STYLE |   12 +++++++-----
>  1 files changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/CODING_STYLE b/CODING_STYLE
> index a579cb1..c17c3f3 100644
> --- a/CODING_STYLE
> +++ b/CODING_STYLE
> @@ -51,11 +51,13 @@ QEMU coding style.
>
>  4. Block structure
>
> -Every indented statement is braced; even if the block contains just one
> -statement.  The opening brace is on the line that contains the control
> -flow statement that introduces the new block; the closing brace is on the
> -same line as the else keyword, or on a line by itself if there is no else
> -keyword.  Example:
> +Every control flow statement is followed by a new indented and braced
> +block, except if it is followed by another control flow statement (else
> +if) or by a condition (do {} while ()); even if the block contains just
> +one statement.  The opening brace is on the line that contains the
> +control flow statement that introduces the new block; the closing
> +brace is on the same line as the else keyword, or on a line by itself
> +if there is no else keyword.  Example:

Nice try, but does it prevent this:
    if (x) for (;;) do {
    } while (0);
?

Maybe also "break" and "goto" can be considered control flow statements.

How about something like "wherever C syntax allows potentially
ambiguous sequence of statements, braces must be used, with the
exception of 'else' followed by 'if'"? Now the problem becomes
defining ambiguous sequences of statements.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]