[Python-ideas] PEP 8 update on line length

David Mertz mertz at gnosis.cx
Tue Feb 19 09:34:10 EST 2019


Wow... Sorry about all my typos from autocorrect. I should not write a
longish reply on my tablet, or should proofread and correct.

On Tue, Feb 19, 2019, 9:30 AM David Mertz <mertz at gnosis.cx wrote:

> On Tue, Feb 19, 2019, 9:07 AM simon.bordeyne <simon.bordeyne at gmail.com
> wrote:
>
>> I find that 100 to 120 characters is ideal as far as line length goes.
>>
>
> I very much hope no one else where had to read it review your code.
>
> In my opinion, splitting lines is much worse in terms of cognitive burden
>> than just a longer line. On top of that, it's not uncommon to reach 6, even
>> 7 indentation levels.
>>
>
> In 20+ years of programming in Python (writing some will known books about
> it too), I have never once indented a block 7 levels. Very, very rarely 6.
> If you do that, your code has serious problems beyond line length.
>
> As far as monitor size goes, I agree that on a laptop is not ideal for
>> 100+ characters per line if you want two pieces of code side by side.
>>
>
> In a readable size and font, I get two vertical panes of 71 characters on
> my 15" Retina display. I can read a smaller font character by character,
> but not easily scan a line.
>
> Here I'm just taking about visual accuity, not the cognitive issue. My
> vision in particular remains 20/20 for near vision (but sadly decayed with
> age for distance). It used to be more like 20/15, but I never used lines
> longer than 80 characters in any programming language (yes, individual
> lines, but not as a rule). I did used to use a somewhat smaller font size
> though.
>
> I guarantee that your code quidditch would improve if you use both shorter
> lines and a larger font. The latter only affects your interaction with your
> screens, the former is essential to everyone who needs to look at your code.
>
> And, fyi, I work on a 23" monitor at home and on a 15.6" monitor on the
>> go. Both are perfectly fine with 100 characters a line.
>>
>> A good middle ground would be to enforce customization of that rule in
>> the most used python linters. A simple setting to set the number of
>> characters before a linting warning occurs would be acceptable.
>>
>
> Every linter I know about is customizable this way.
>
>
>>
>>
>> Envoyé depuis mon smartphone Samsung Galaxy.
>>
>> -------- Message d'origine --------
>> De : David Mertz <mertz at gnosis.cx>
>> Date : 19/02/2019 07:28 (GMT+01:00)
>> À : Anders Hovmöller <boxed at killingar.net>
>> Cc : Simon <simon.bordeyne at gmail.com>, python-ideas <
>> python-ideas at python.org>
>> Objet : Re: [Python-ideas] PEP 8 update on line length
>>
>> 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/8d6927ee/attachment.html>


More information about the Python-ideas mailing list