Why ELIF?

Mensanator mensanator at aol.com
Sun Oct 11 23:35:42 EDT 2009


On Oct 11, 6:43�pm, Carl Banks <pavlovevide... at gmail.com> wrote:
> On Oct 11, 4:12�pm, Mensanator <mensana... at aol.com> wrote:
>
>
>
>
>
> > On Oct 11, 5:05 pm, Carl Banks <pavlovevide... at gmail.com> wrote:
>
> > > On Oct 11, 7:10 am, Grant Edwards <inva... at invalid.invalid> wrote:
>
> > > > On 2009-10-11, metal <metal... at gmail.com> wrote:
>
> > > > > I wonder the reason for ELIF. it's not aligned with IF, make code ugly
>
> > > > It most certainly is aligned with IF:
>
> > > > if cond1:
> > > > do this
> > > > elif cond2:
> > > > do that
> > > > else:
> > > > do the other
>
> > > > The "if" "elif" and "else" are all aligned in all of the code
> > > > I've ever seen.
>
> > > The condition in the elif clause is two columns to the right of the
> > > condition in the if clause.
>
> > Why does that matter? Isn't whitespace only
> > significant at the start of a line?
>
> I don't think it matters. �I'm explaining what the OP is complaining
> about.
>
> > > It's a silly thing to worry about, in fact the slight visual
> > > distinctness of it probably helps readability.
>
> > It doesn't, but you're right, it's silly to
> > worry about.
>
> No it helps me, not much, but a little. �Whether the columns line up
> or not is a visual clue that can help spot errors. �For instance,
> noticing that condition1 and contition2 line up might help me spot the
> error in the following code (second clause should be elif).
>
> if condition1:
> � � xxx()
> if contidion2:
> � � yyy()
> else:
> � � zzz()
>
> It might never help you, but that doesn't mean it can't help others.
> I can only recall once or twice being alerted to this mistake by
> column alignment, and definitely can recall several times where I
> missed it in spite of the extra visual clue. �All I said is it was a
> slight visual clue, not an earth-shattering deal maker.
>
> > > Some people do get
> > > finicky about columns and try to line things up all the time.
>
> > But you can do it if you really want to:
>
> > a � � � � �= �1
> > if � � �a �> �5:
> > � print a
> > elif � �a �> 10:
> > � print a �/ �3
> > else:
> > � print 'error'
>
> Ugh.
>
> > >It's
> > > frustrating, wasteful, and ultimately hopeless, and sometimes
> > > deceptive (lining things up can suggest relationships where none
> > > exists) so I make it a point not to do it, however prettier it'll make
> > > those two lines.
>
> > The above example is of dubious value. Where I
> > use it is places like
>
> > ONE � = gmpy.mpz( 1)
> > TWO � = gmpy.mpz( 2)
> > THREE = gmpy.mpz( 3)
> > TEN � = gmpy.mpz(10)
>
> I never line up columns except when defining some kind of table.
> (E.g., PyMemberDef in a C module.) �What happens when you have to add
> a constant like this:
>
> A_HUNDRED_MILLION = gmmp.mpz(100000000)
>
> Now you have to widen a dozen pair of parentheses, and the readability
> suffers when you have all kinds of space separating things:
>
> ONE � � � � � � � = gmpy.mpz( � � � �1)
>
> Plus this has the "implied fictional realtionship" problem I mentioned
> (although not too dangerous or misleading here). �It'd have been
> better not to have bothered.

I would much prefer this

 A_HUNDRED_MILLION = gmpy.mpz(100000000)
 ONE               = gmpy.mpz(        1)

to this

 HUMPTY = gmpy.mpz(3876497)
 DUMPTY = gmpy.mpz(912350)
 ALICE = gmpy.mpz(1278657)
 WHT_RABBIT = gmpy.mpz(75648)
 CHESHIRE = gmpy.mpz(913237)

anyday. But that's me. The only one who has
to read my code is me and I like to be able to
follow my thoughts at a later date.

>
> Carl Banks




More information about the Python-list mailing list