The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Jon Steinhart <jon@fourwinds.com>
To: TUHS main list <tuhs@minnie.tuhs.org>
Subject: Re: [TUHS] tabs vs spaces - entab, detab
Date: Thu, 04 Mar 2021 16:15:16 -0800	[thread overview]
Message-ID: <202103050015.1250FG1d053755@darkstar.fourwinds.com> (raw)
In-Reply-To: <CALMnNGgjsTcN3F4Ou_qtkmqewhRNpntnxts64WpaMdGRbRSAVA@mail.gmail.com>

Andy Kosela writes:
> I am still computing in full screen text mode on CRT monitors, so it's
> 80 columns and 8 character tab as indentation for me.  It is a golden
> standard.
>
> >From Linux kernel coding style doc:
> "Tabs are 8 characters, and thus indentations are also 8 characters.
> There are heretic movements that try to make indentations 4 (or even
> 2!) characters deep, and that is akin to trying to define the value of
> PI to be 3."
>
> --Andy

Well, I suppose that I have to weigh in here before this discussion gets shut
down.

First of all, it's a shame that there isn't a nice global way to set system
tab stops.  I have a lot of aliases that pipe through "expand -t 4".

Second, while I agree with about 90% of the linux kernel coding style the
indent and line length parts are in the other 10%.  And from looking at
kernel code, while many may agree with the style doc they don't actually
follow it so I'm not sure what agreement means.

I always thought that the 80 character line length limit (now an amazing 100)
was silly; nobody was using VT-100s by the time that linux was developed.  Most
developers were born after the last one was relegated to a museum somewhere.
In that timeframe I had changed to using 132 column; I would have gone to 160
but not everybody that I worked with thought that it was worth whatever it took
to have a great monitor.  I have UHD on both my desktop and laptop which allows
a pair of nicely readable 132 column windows with room left over.  No longer
much of a cost barrier.

The big problem that I have with the linux style is that in addition to the
tab stop and line length restrictions, there is the weird belief that one is
doing something wrong if more than three levels of indent are needed.  From
what I have seen, this is followed by unnecessarily breaking up functions
combined with zillions of macros and static inline functions in header files
to give the appearance of only three levels of indent.  Bottom line to me is
that it makes the code unreadable, and if I have to choose an ideology it's
making the code easy to read for someone who didn't write it, not some slavish
adherence to a rule that doesn't make a lot of sense to me.

I think that line breaks hurt readability as they make it harder to mentally
process the block structure of code in pre-attentive mode.  I used to have
8 character tab stops and short (traditional one character) variable names;
now I've moved to 4 character tab stops and more readable variable names.

When I do need to break a long line, I indent the continuation line(s) one
character from the starting line to preserve the block structure appearance as
much as possible.  No additional indent makes it hard to distinguish separate
statements, two character indent makes it hard to tell which level the line
belongs to since it's halfway between two levels.

I do use tabs, not spaces.  Main reason, going back decades, is that I can
find a statement by searching for "^Ifor" which is distinct from any other
use of for.  For the same reason, I put function definitions in column 1
with the type on the line above, so that I can easily search for "^foo" which
is distinct from any invocations.

Anyway, whether or not you agree with this it works for me; my goal is to
make my code comprehensible by people who aren't as smart as I am because
I want to move on, not maintain stuff.

Jon

  parent reply	other threads:[~2021-03-05  0:15 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-04 16:52 Will Senn
2021-03-04 16:59 ` Clem Cole
2021-03-04 18:31   ` arnold
2021-03-04 19:23     ` Nemo Nusquam
2021-03-04 19:37       ` Steve Nickolas
2021-03-04 19:50         ` Rob Pike
2021-03-04 21:20           ` Robert Clausecker
2021-03-04 21:25           ` Will Senn
2021-03-05  9:58             ` John Gilmore
2021-03-06 21:31               ` Dave Horsfall
2021-03-06 21:38                 ` Larry McVoy
2021-03-06 22:05                   ` Clem Cole
2021-03-15  3:02                     ` John Cowan
2021-03-15 18:15                       ` Steffen Nurpmeso
2021-03-15 21:19                         ` Bakul Shah
2021-03-15 23:47                           ` Steffen Nurpmeso
2021-03-16  3:10                             ` Earl Baugh
2021-03-15 21:08                       ` Dave Horsfall
2021-03-15 21:12                         ` Steve Nickolas
2021-03-15 21:24                           ` Dave Horsfall
2021-03-15 22:06                             ` Adam Thornton
2021-03-16 13:25                             ` arnold
2021-03-17  5:10                       ` Greg 'groggy' Lehey
2021-03-06 21:40                 ` Steve Nickolas
2021-03-04 18:48   ` emanuel stiebler
2021-03-05  0:44     ` John Cowan
2021-03-05  0:55       ` Larry McVoy
2021-03-05  1:09         ` George Michaelson
2021-03-05  1:21           ` Larry McVoy
2021-03-05  1:29             ` Richard Salz
2021-03-04 18:33 ` John P. Linderman
2021-03-04 21:24 ` Greg 'groggy' Lehey
2021-03-04 21:27   ` Will Senn
2021-03-04 21:29     ` Greg 'groggy' Lehey
2021-03-04 21:42       ` Will Senn
2021-03-04 21:48       ` John P. Linderman
2021-03-04 22:08         ` Andy Kosela
2021-03-04 22:12           ` Greg 'groggy' Lehey
2021-03-05 14:13             ` Steffen Nurpmeso
2021-03-05 20:24               ` John Cowan
2021-03-05 21:51                 ` Bakul Shah
2021-03-06 23:43                 ` Steffen Nurpmeso
2021-03-05  0:15           ` Jon Steinhart [this message]
2021-03-06 21:22           ` Dave Horsfall
2021-03-06 23:58             ` Bakul Shah
2021-03-07  0:03               ` Jon Steinhart
2021-03-07  0:25               ` Steve Nickolas
2021-03-07  9:16               ` Brantley Coile
2021-03-05  9:50         ` [TUHS] tunefs -m 5% John Gilmore
2021-03-05 15:01           ` Grant Taylor via TUHS
2021-03-05 15:32           ` Theodore Ts'o
2021-03-06  1:18             ` Greg 'groggy' Lehey
2021-03-06  1:52               ` Warner Losh
2021-03-06 21:45                 ` Dave Horsfall
2021-03-06 22:03                   ` Larry McVoy
2021-03-09  4:59                     ` Greg 'groggy' Lehey
2021-03-06 23:52                   ` David Barto
2021-03-06  1:16           ` Greg 'groggy' Lehey
2021-03-04 22:10     ` [TUHS] tabs vs spaces - entab, detab Greg A. Woods
2021-03-05  1:41 ` alan
2021-03-05  1:55 ` alan
2021-03-05  2:06   ` Will Senn
2021-03-05 17:08     ` Clem Cole
2021-03-05 17:19       ` Richard Salz
2021-03-05 19:39         ` Lawrence Stewart
2021-03-05 19:51           ` Dan Halbert
2021-03-08  1:52       ` Will Senn
2021-03-05 16:43 ` Scot Jenkins via TUHS
2021-03-05 22:23   ` Bakul Shah
2021-03-06 20:51 ` Dave Horsfall
2021-03-06 21:01   ` Jon Steinhart
2021-03-06 21:19     ` Larry McVoy
2021-03-06 22:01       ` Clem Cole
2021-03-05 16:44 M Douglas McIlroy
2021-03-05 19:29 ` Greg A. Woods
2021-03-06 23:21   ` Steffen Nurpmeso
2021-03-05 22:50 Norman Wilson
2021-03-07  2:53 Nelson H. F. Beebe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202103050015.1250FG1d053755@darkstar.fourwinds.com \
    --to=jon@fourwinds.com \
    --cc=tuhs@minnie.tuhs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).