On Tue, Feb 19, 2019, 9:07 AM simon.bordeyne <simon.borde...@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 <me...@gnosis.cx> > Date : 19/02/2019 07:28 (GMT+01:00) > À : Anders Hovmöller <bo...@killingar.net> > Cc : Simon <simon.borde...@gmail.com>, python-ideas < > python-ideas@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 <bo...@killingar.net wrote: > >> >> >> > On 19 Feb 2019, at 05:48, David Mertz <me...@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 > >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/