Readability counts, was Re: Use of Lists, Tupples, or Sets in IF statement.

Rustom Mody rustompmody at gmail.com
Tue Mar 15 07:08:18 EDT 2016


On Tuesday, March 15, 2016 at 2:00:25 PM UTC+5:30, Peter Otten wrote:
> Rustom Mody wrote:
> 
> > Others have answered some parts
> >>>> if x in x_list:
> > ...     print("That is a fruit.")
> > ... else:
> > ...     print("That is not a fruit.")
> > ...
> > 
> > However one can distribute the print out of the if; Thus
> > 
> >>>> "This is %s a fruit" % ("" if x in x_list else "not")
> 
> Which of the two versions will most readers grasp at first sight?
> Which one is easier to modify so that it works for arbitrary attributes?
> Which one is easier to internationalize?

Heh!
I think you are saying that my (last) version is clever in a rather stupid
sort of way. Yes?
Well if that is what someone recommends for serious programming then guilty
as charged

But there is a world of difference between
- What one SHOULD (or not) do
- What one CAN do

The first is about serious|professional software engineering
The second is about getting an education beyond basic to some more familiarity

I assumed that OP is in the noob stage and was welcome some learning.
So what I wanted to convey is not so much that such expressions are nice to
have in serious code. Rather that
1. Like algebra has laws so does programming
2. That these laws can be used to massage one program into another
3. That expressions (like %-format) can occur elsewhere than in prints
4. That prints are usually unnecessary (and an abomination)

Not that 3 and 4 come out so well as 1,2 in the above example.

However to answer your questions specifically.

Internationalization: Terrible
Arbitrary attributes: not sure what you are referring to
Readability: Very much like beauty -- in the eye of the beholder
Some things are universally beautiful; some only in some cultural contexts
Likewise readability

Partly people find if-expressions unreadable because they are not used to them.
This is backward because expressions are as basic than statements  -- if
anything more basic.

It is *symmetric*  Unfortunately understood as lopsided
More such symmetries in this table:
http://blog.languager.org/2016/01/primacy.html#expstat

Partly python if-expressions are unreadable because they are backward compared
to if-statements. A minor syntactic nuisance but yes it does impact readability



More information about the Python-list mailing list