On 10/21/2010 7:10 AM, Bron Gondwana wrote:
  set tabstop=3
  set expandtab

3?  Why three?


Einstein said "make everything as simple as possible, but not too simple". I think a similar principle applies to indentation: indent as little as possible, but not too little.

When I first started coding again 10 years ago because both the programmers I was working with abruptly quit for personal reasons, leaving me (and the client) in the lurch, I inherited a bunch of code where tab was used exclusively to indent. In my opinion, tab = 8 characters indentation is ridiculously unreadable. With just 3 or 4 nested blocks your lines start halfway across the page, increasing line breaks. When I discovered tabstop and expandtab in vim, I realized that I could make the indentation anything I damn well pleased and it would automatically be invoked in any file I edited. And since I was the only one working on the code at this point, my opinion was the only one that mattered. After playing around a bit, glancing at a bunch of code to make sure nested blocks "jumped out" visually, etc., I determined that -- at least for me -- 3 spaces was the optimal number; 2 wasn't enough, 4 excessive.

Re: using 8 space tabs. This is the point where someone says "what are you talking about? Everyone has 24" 1900x1200 monitors these days; you can have a terminal which is 300 characters wide!" Yes, and I can also go blind staring at it 8 hours a day -- I'll pass.

Re: using tabs for indentation at all: especially given the somewhat disturbing growing ubiquity of python, getting in the habit of using tabs for indentation is like giving a box of matches and a stick of dynamite to your pet monkey. It seems innocuous enough, but sooner or later a tragedy will occur. Mixing tabs and spaces;especially given that the width of tabs is user-definable? Add to the preceding showing the monkey how to light the matches and throw in a couple of liters of gasoline. And yes, I'm aware that Makefiles require tabs; this is just one more indication that make is obsolete and needs to be rewritten from scratch using modern programming paradigms.

I know talking about indentation is like starting a "vi vs. emacs -- which is better?" discussion, but you asked.


--
Patrick Goetz

Reply via email to