Re: PEP8 79 char max

Discussion in 'Python' started by Ed Leafe, Jul 29, 2013.

  1. Ed Leafe

    Ed Leafe Guest

    On Jul 29, 2013, at 3:08 PM, Joel Goldstick <> wrote:

    >> Would following
    >> this recommendation improve script performance?

    >
    > Not performance, but human readability


    IMO, this isn't always the case. There are many lines of code that are broken up to meet the 79 character limit, and as a result become much less readable.


    -- Ed Leafe
    Ed Leafe, Jul 29, 2013
    #1
    1. Advertising

  2. On Mon, 29 Jul 2013 15:18:59 -0500, Ed Leafe wrote:

    > On Jul 29, 2013, at 3:08 PM, Joel Goldstick <>
    > wrote:
    >> Not performance, but human readability

    >
    > IMO, this isn't always the case. There are many lines of code

    that are
    > broken up to meet the 79 character limit, and as a result become

    much
    > less readable.


    Speaking of readability, what's with the indentation of your post? The
    leading tab plays havoc with my newsreader's word-wrapping.

    Breaking lines to fit in 79 characters should almost always be perfectly
    readable, if you break it at natural code units rather than at random
    places. E.g. I have a code snippet that looks like this:

    [....whatever...]
    else:
    completer = completer.Completer(
    bindings=(r'"\C-xo": overwrite-mode',
    r'"\C-xd": dump-functions',
    )
    )

    I'm not entirely happy with the placement of the closing brackets, but by
    breaking the line at the arguments to Completer, and then putting one
    binding per line, I think it is perfectly readable. And much more
    readable than (say) this:


    else:
    completer = completer.Completer(bindings=
    (r'"\C-xo": overwrite-mode', r'"\C-xd": dump-functions',))


    As far as I can tell, that's pretty much the longest line I have in my
    personal code base, possibly excepting unit tests with long lists of
    data. I simply don't write deeply nested classes and functions unless I
    absolutely need to.


    --
    Steven
    Steven D'Aprano, Jul 29, 2013
    #2
    1. Advertising

  3. On 29 July 2013 22:34, Steven D'Aprano <
    > wrote:


    > On Mon, 29 Jul 2013 15:18:59 -0500, Ed Leafe wrote:
    >
    > > On Jul 29, 2013, at 3:08 PM, Joel Goldstick <>
    > > wrote:
    > >> Not performance, but human readability

    > >
    > > IMO, this isn't always the case. There are many lines of code

    > that are
    > > broken up to meet the 79 character limit, and as a result become

    > much
    > > less readable.

    >
    > Speaking of readability, what's with the indentation of your post? The
    > leading tab plays havoc with my newsreader's word-wrapping.
    >
    > Breaking lines to fit in 79 characters should almost always be perfectly
    > readable, if you break it at natural code units rather than at random
    > places. E.g. I have a code snippet that looks like this:
    >
    > [....whatever...]
    > else:
    > completer = completer.Completer(
    > bindings=(r'"\C-xo": overwrite-mode',
    > r'"\C-xd": dump-functions',
    > )
    > )
    >
    > I'm not entirely happy with the placement of the closing brackets, but by
    > breaking the line at the arguments to Completer, and then putting one
    > binding per line, I think it is perfectly readable. And much more
    > readable than (say) this:
    >
    >
    > else:
    > completer = completer.Completer(bindings=
    > (r'"\C-xo": overwrite-mode', r'"\C-xd": dump-functions',))
    >


    But less readable to me than:

    completer = completer.Completer(bindings=[r'"\C-xo": overwrite-mode',
    r'"\C-xd": dump-functions'])

    Personal preference.

    As far as I can tell, that's pretty much the longest line I have in my
    > personal code base, possibly excepting unit tests with long lists of
    > data. I simply don't write deeply nested classes and functions unless I
    > absolutely need to.



    I'd go for:

    completer = completer.Completer(bindings=[
    r'"\C-xo": overwrite-mode',
    r'"\C-xd": dump-functions'
    ])

    although possibly drop the "bindings=" if possible. "[]" is less ambiguous
    a construct than "()"¹ and the "balance" of the code is better my way if
    such ephemeral ideas as that count.

    Anyway, the point I'm trying to make is that *line length is a personal
    thing*. There are two rules:

    1) Stick with what other people on the team are doing, if relevant
    2) Don't be stupid

    The rest is your choice. Some people like 80 character limits, but I've
    consistently preferred "whatever you think" as a better rule.

    ¹ As in there are fewer possible uses, so it's quicker to know what you're
    using it for
    Joshua Landau, Jul 29, 2013
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Devyn Collier Johnson

    PEP8 79 char max

    Devyn Collier Johnson, Jul 29, 2013, in forum: Python
    Replies:
    3
    Views:
    115
    llanitedave
    Jul 31, 2013
  2. Joel Goldstick

    Re: PEP8 79 char max

    Joel Goldstick, Jul 29, 2013, in forum: Python
    Replies:
    0
    Views:
    107
    Joel Goldstick
    Jul 29, 2013
  3. Devyn Collier Johnson

    Re: PEP8 79 char max

    Devyn Collier Johnson, Jul 29, 2013, in forum: Python
    Replies:
    46
    Views:
    350
    Serhiy Storchaka
    Sep 7, 2013
  4. Terry Reedy

    Re: PEP8 79 char max

    Terry Reedy, Jul 29, 2013, in forum: Python
    Replies:
    0
    Views:
    79
    Terry Reedy
    Jul 29, 2013
  5. Skip Montanaro

    Re: PEP8 79 char max

    Skip Montanaro, Jul 29, 2013, in forum: Python
    Replies:
    0
    Views:
    99
    Skip Montanaro
    Jul 29, 2013
Loading...

Share This Page