Yesterday, I shared some spicy takes. A few were particularly controversial—most notably, that I correct Gif the correct way (with a soft G)—but I also got a lot of emails asking me to elaborate on a few of them.
Today, I wanted to talk about how tabs are objectively better than spaces. This won’t take long.
Tabs let you define how big you want each indent to be, and spaces do not.
Spaces and tabs are mixed from one line to the next
This is a solved problem: Enforce linting before committing using something like Git Hooks / Husky.
Have you ever tried to read an important technical diagram in ASCII art aligned with tabs by different people with different IDE settings?
No, because we live in the present and use proper tools for diagrams. SVG diagrams tend to be common nowadays. I’m aware you can’t read them raw, but realistically the intersection between people who need to read important technical diagrams and people who don’t have access to a web browser is vanishingly small (dare I say nonexistent?)
Tell me you develop with modern languages without telling me you develop with modern languages.
Try linting perl, or bash.
Like yeah if you work on a modern JS/Python/C# project, whatever, whitespace is going to be autoformatted, so the tabs vs spaces debate does not matter AT ALL.
Tell me you develop with modern languages without telling me you develop with modern languages.
You say this like it’s a bad thing?
Try linting perl, or bash.
If you’re already writing Perl/Bash scripts then it would probably not take you long to write a git hook to check the beginning of each line of source to check if there’s a space or a tab character and preventing the commit if the wrong one is found. Crude and far from perfect, but still better than nothing.
if you work on a modern JS/Python/C# project, whatever, whitespace is going to be autoformatted, so the tabs vs spaces debate does not matter AT ALL.
It does though. If you read the original article then you’d know that the advantage of tabs is that everyone can choose exactly how deep their tabstops are, which is an objective benefit over spaces.
(lol lemmy bug found, can’t write the actual “left angled bracket - left angled bracket” syntax, it somehow truncates the comment)
OTOH if you use a modern auto-formattable language, then you can auto-format to tabs (and back for committing) if you want, so the debate doesn’t matter in that case. It goes both ways.
This is a solved problem: Enforce linting before committing using something like Git Hooks / Husky.
No, because we live in the present and use proper tools for diagrams. SVG diagrams tend to be common nowadays. I’m aware you can’t read them raw, but realistically the intersection between people who need to read important technical diagrams and people who don’t have access to a web browser is vanishingly small (dare I say nonexistent?)
Tell me you develop with modern languages without telling me you develop with modern languages.
Try linting perl, or bash.
Like yeah if you work on a modern JS/Python/C# project, whatever, whitespace is going to be autoformatted, so the tabs vs spaces debate does not matter AT ALL.
You say this like it’s a bad thing?
If you’re already writing Perl/Bash scripts then it would probably not take you long to write a git hook to check the beginning of each line of source to check if there’s a space or a tab character and preventing the commit if the wrong one is found. Crude and far from perfect, but still better than nothing.
It does though. If you read the original article then you’d know that the advantage of tabs is that everyone can choose exactly how deep their tabstops are, which is an objective benefit over spaces.
It’s not wrong to work with modern languages, but don’t pretend that you have the answer to the debate if you don’t work in a field where it applies.
Linting bash/perl is a TERRIBLE idea. Consider the following, extremely common piece of code (perl has equivalent syntax as well):
#!/bin/bash cat > testfile < < EOF test1 test2 EOF
(lol lemmy bug found, can’t write the actual “left angled bracket - left angled bracket” syntax, it somehow truncates the comment)
OTOH if you use a modern auto-formattable language, then you can auto-format to tabs (and back for committing) if you want, so the debate doesn’t matter in that case. It goes both ways.