Tabs bad
Paul McNett
p at ulmcnett.com
Tue Dec 6 10:36:02 EST 2005
Björn Lindström wrote:
> Paul Rubin <http://phr.cx@NOSPAM.invalid> writes:
>
>
>>bkhl at stp.lingfil.uu.se (Björn Lindström) writes:
>>
>>>Actually using tabs for eight spaces and then filling out with spaces to
>>>the correct indentation is the convention for Emacs Lisp. Of course,
>>>since everyone coding Emacs Lisp does it with the same editor, it's no
>>>problem.
>>
>>The variable `indent-tabs-mode' controls this. I like no tabs.
>
>
> Same here. It's still the convention for Emacs code, regrettably.
I don't use Emacs, I do indent with tabs, and I do fill in the extra spaces of
continuation lines with spaces. Therefore, I break all the commandments and do
everything wrong. ;)
FWIW, I've long struggled with my opinion on tabs versus spaces. When I started
programming in 1995, tabs seemed the logical choice because I was using
different editors all the time and I could tell each editor how many spaces to
give each tab. But then as I started reading more people's code I started seeing
patterns in source code that I couldn't emulate using pure tabs. This comes down
to horizontal "lining up" continuation lines with prior lines. Examples:
select customer.cfirst,
customer.clast
from customer
where customer.cstate in ("CA", "OR")
order by customer.clast
win = dabo.ui.dDialog(self, NameBase="frmRulesDialog",
Caption="Minesweeper Rules", SaveRestorePosition=True,
Centered=True, Modal=False)
Everyone that was writing "beautiful code" like this was using spaces only. So I
switched. But it was a real PITA to not be able to use any old editor, only ones
that could set how many hard spaces to make for each hard tab. And, I had to
remember to make that setting because I prefer 2 spaces per tab.
So now I'm back to tabs for indentation and spaces for lining up continuation
lines. Example:
win = dabo.ui.dDialog(self, NameBase="frmRulesDialog",
Caption="Minesweeper Rules", SaveRestorePosition=True,
Centered=True, Modal=False)
(if that didn't come over email correctly, that is one tab for indentation on
all three lines, followed by several spaces on lines 2 and 3 for getting the
arguments lined up with the previous line.)
I've been reluctant to admit to doing this since it violates the NEVER MIX TABS
AND SPACES commandment, but there you go. I found a way to reconcile the best of
both worlds, because let's face it, tabs do make slightly more sense.
Finding out that Emacs has been doing this by default makes me feel better about
admitting this publicly.
There are definitely issues with mixing whitespace like this, especially is
someone is encountering it without understanding it. But Python handles it just
fine.
--
Paul McNett
http://paulmcnett.com
http://dabodev.com
More information about the Python-list
mailing list