---------------------------------------- | |
Tabs vs spaces | |
July 29th, 2018 | |
---------------------------------------- | |
There's a post on lobste.rs right now [0] about tabs & spaces. | |
Don't go read it, there's no point. You've already read everything | |
there is to be said on the subject. Seriously. Don't follow this | |
link to the lobste.rs comments either. | |
[0] Elastic tabstops - a better way to indent and align code (comments) | |
I don't think I have an official Opinion(TM) already floating out | |
there in the inter-ether, so I'll use this opportunity to give my | |
two cents. I'm pro tabs, with caveats. | |
I'll start with the caveats because they're the easy part. I will | |
use spaces in any of the following situations: | |
- The language spec calls for spaces (i.e., python) | |
- The team styleguide calls for spaces | |
- The codebase I'm interacting with has already established the | |
use of spaces over tabs | |
- I'm working with someone who is a die-hard advocate for spaces | |
and won't shut up about it unless I just give in | |
Here's why I prefer tabs: | |
Indentation distance is a visual preference which should be | |
enforced by the person working with the code, not the maintainer | |
of the code. If I want to develop using eight spaces as the visual | |
indentation of blocks, then I should do that. There is no valid | |
reason(*) that my personal choice of tabstop should be followed by | |
any other developer who is also working with this code. But how | |
can we both get it the way we want and not have to constantly | |
battle over the indentation style? What method could we possibly | |
use? Oh right... a fucking tab. | |
Tabs can be set to visually show up at whatever distance you want. | |
If you like a tiny tiny little increment, set a tabstop to two | |
characters, or even 1! If you like a giant leap along the line, go | |
for eight, or ten, or whatever. That's it. Just set it up how you | |
want to see it. | |
There's another reason, though I consider it of less importance. | |
A tab is a single character. Spaces are multiple characters. Why | |
add multiple characters to something when you don't have to? | |
Semantically, indent with the single character that accomplishes | |
that. Then you're done. Tada! | |
(*) I must address the usual counter-argument here: the alignment | |
of parameters, equal signs, or other nonsense that cascades down | |
from an arbitrary point on the line. Spaces can make everything | |
pretty, like ascii art. That's a plus! If we use tabs we can't do | |
that and we'd have to suffer endlessly with vertically listed | |
parameters that don't line up with the spot where the first | |
parameter fell naturally on the line. This is true. I think using | |
a single flexible character for code indentation that lets people | |
do things their own way far outweighs code knolling [1]. | |
[1] Knolling | |
So, in summary: I don't care how you wanted your code to be | |
viewed. I want to view it the way I prefer, which lets me work | |
faster and easier. Use a tab. Let me set my own definition for | |
what that means. |