mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Scott Preece" <sepreece@gmail.com>
To: "Geert Uytterhoeven" <geert@linux-m68k.org>
Cc: "Satyam Sharma" <satyam.sharma@gmail.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Christoph Hellwig" <hch@infradead.org>,
	"Roland McGrath" <roland@redhat.com>,
	"Christoph Hellwig" <hch@lst.de>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: condingstyle, was Re: utrace comments
Date: Tue, 1 May 2007 08:11:20 -0500	[thread overview]
Message-ID: <7b69d1470705010611y8f635a9pdc2f1dd6ec03700b@mail.gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0705011058330.27246@anakin>

On 5/1/07, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> On Tue, 1 May 2007, Satyam Sharma wrote:
> > Actually, the latter style (one condition per line and the && or ||
> > operators appearing _before_ the conditions in subsequent lines)
> > is quite popular for multi-line compound conditions (well, I've seen this
> > in kernel/workqueue.c, kernel/stop_machine.c, etc at least, and also in
> > Linus' code, if I'm not mistaken). We also align subsequent lines to the
> > column of the condition belonging to the same "logical level" on the
> > previous line using _spaces_ (note that this is alignment, not indentation,
> > using spaces). The rationale is to make the operator prominent and thus make
> > the structure of a complex multi-line compound conditional expression more
> > readable and obvious at first glance itself. For example, consider:
> >
> >       if (veryverylengthycondition1 &&
> >               smallcond2 &&
> >               (conditionnumber3a ||
> >               condition3b)) {
> >               ...
> >       }
> >
> > versus
> >
> >       if (veryverylengthycondition1
> >           && smallcond2
> >           && (conditionnumber3a
> >               || condition3b)) {
> >               ...
> >       }
> >
> > ?
> >
> > Latter wins, doesn't it?
>
> ... because you forgot to align subsequent lines to the column of the
> condition belonging to the same "logical level" on the previous line.
>
> Consider this:
>
>         if (veryverylengthycondition1 &&
>             smallcond2 &&
>             (conditionnumber3a ||
>              condition3b)) {
>                 ...
>         }
>
> Gr{oetje,eeting}s,
>
>                                                 Geert


I still find the leading-operator style much more readable. The most
important thing in reading a long, complex conditional is
understanding the structure of the operators, not the operands.
Putting the operators at the front of the line emphasizes that
structure, especially since you can line the operators up to match the
logical indenting, whereas the trailing-operator style leaves the
operators scattered and hard to assemble into a logical structure.

However, there's a lot of difference of opinion on this (perhaps
rooted in differences in cognition and reading behavior). For me it's
not even close - expressions broken so the operators are at the head
of the line snap into focus and those with operators at the ends of
the lines look like undifferentiated goo. Since some of the style
guides I've seen do it the other way, I assume some people have the
opposite perception. I guess that's why indent offers options for
doing it either way...

scott

  reply	other threads:[~2007-05-01 13:11 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-27 16:51 Christoph Hellwig
2006-12-05  9:51 ` Roland McGrath
2006-12-06 21:58   ` Christoph Hellwig
2007-04-30  4:02 ` Roland McGrath
2007-04-30  9:08   ` Christoph Hellwig
2007-04-30  9:18     ` Russell King
2007-04-30  9:22       ` Christoph Hellwig
2007-04-30  9:33         ` Russell King
2007-04-30  9:45           ` Russell King
2007-04-30 10:32             ` Christoph Hellwig
2007-04-30 10:18           ` Christoph Hellwig
2007-06-22  2:40           ` Roland McGrath
2007-05-10  8:49     ` Roland McGrath
2007-04-30  9:11   ` condingstyle, was " Christoph Hellwig
2007-04-30 17:09     ` Andrew Morton
2007-04-30 18:19       ` Jan Engelhardt
2007-04-30 18:39       ` Daniel Hazelton
2007-04-30 18:42       ` Satyam Sharma
2007-04-30 22:18         ` Stefan Richter
2007-05-01  9:00         ` Geert Uytterhoeven
2007-05-01 13:11           ` Scott Preece [this message]
2007-05-01 14:16           ` David Woodhouse
2007-05-01 15:00             ` John Anthony Kazos Jr.
2007-05-01 20:12               ` Satyam Sharma
2007-05-01 15:05             ` Randy Dunlap
2007-05-01 15:06               ` David Woodhouse
2007-05-01 20:44                 ` Satyam Sharma
2007-05-01 15:07             ` Geert Uytterhoeven
2007-05-01 15:11               ` David Woodhouse
2007-05-01 16:07             ` David Howells
2007-05-02  2:18               ` Eric W. Biederman
2007-05-02  9:32               ` David Howells
2007-05-02 11:55                 ` Eric W. Biederman
2007-05-02 12:05                 ` David Howells
2007-05-01 16:15         ` Stuart MacDonald
2007-04-30 21:34       ` Luck, Tony

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=7b69d1470705010611y8f635a9pdc2f1dd6ec03700b@mail.gmail.com \
    --to=sepreece@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=geert@linux-m68k.org \
    --cc=hch@infradead.org \
    --cc=hch@lst.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=roland@redhat.com \
    --cc=satyam.sharma@gmail.com \
    /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

all inboxes | Powered by JetHome®