[Python-ideas] PEP 8 update on line length

David Mertz mertz at gnosis.cx
Tue Feb 19 01:28:36 EST 2019


60, or 68, or 80 characters, is not per se a cognitive limit. Yes, sure
whitespace counts much less towards that burden than do regular characters.
And to a significant degrees, punctuation vs. letters vs. numbers matter.
And sure familiar words such as keywords scan a bit easier than unfamiliar
names of variables. And so on.

But 80 characters in general is already too wide most of the time. 65 is a
better goal as a rule of thumb, with 80 already being for exceptionally
long lines. Python keywords are already short, there's not much improvement
to be had there. Saving two characters for acryptic WHL isn't better than
the word 'while', for example.

Pretty much the only time my code how's more than 80 characters is when it
includes string literally that occupy a large chunk of the width. But if
that 50 character string is the last argument of a function call, the
reader can mostly stop scanning at it's beginning, so it's not terrible.
When I have many keyword arguments, I break them into multiple physical
lines using parents too continue the logical line. Or if I have complex
compound conditions, I give the subclauses short but descriptive names
before the if/elif.

On Tue, Feb 19, 2019, 1:11 AM Anders Hovmöller <boxed at killingar.net wrote:

>
>
> > On 19 Feb 2019, at 05:48, David Mertz <mertz at gnosis.cx> wrote:
> >
> > You either have much better eyes to read tiny fonts than I do, or maybe
> a much larger monitor (it's hard for me to fit a 30"" monitor in my laptop
> bag).
> >
> > But that's not even the real issue. If the characters were in giant
> letters on billboards, I still would never want more than 80 of them on a
> line (well, rarely, I violate PEP 8 sometimes). Centuries if not millennia
> of experience with writing show that cognitive burden goes up
> exponentially, not linearly, as lines get to be more than about 60
> characters.
>
> If that is the issue then we should be talking about non-space characters,
> not a 68 column limit right? No way does 40 spaces due to indent count
> towards the cognitive burden :)
>
> Also, if the cognitive burden is the issue then we should talk about short
> forms for keyword arguments again. The way the 68 column limit works in
> practice is that people avoid keyword arguments because of line length,
> plus the issues already mentioned.
>
> / Anders
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190219/26a89ea0/attachment.html>


More information about the Python-ideas mailing list