I used to think this way, at least when writing C++. But it’s objectively harder to do and convince other people to follow, especially if they can’t be bothered to change their environment to display tabs and spaces differently. It’s a losing battle so now I just do spaces when working with other people
Comment on Tabs are objectively better than spaces - gomakethings.com
wgs@lemmy.sdf.org 1 year ago
Tabs for indent, spaces for alignment. This is the way, I can’t believe people are still fighting that ?
GuybrushThreepwo0d@programming.dev 1 year ago
KIM_JONG@lemmy.world 1 year ago
Always do spaces, because you can never trust how someone else has their tab configured.
How is this even a debate anymore. I thought we all agreed on this years ago.
Pyroglyph@lemmy.world 1 year ago
you can never trust how someone else has their tab configured
Why on earth would I care how someone else has their editor configured? It’s none of my business, and none of yours either.
azertyfun@sh.itjust.works 1 year ago
Because other people are fucking morons and their editor doesn’t have visible whitespace enabled - or it does but they don’t give a shit.
Therefore these fucking morons have anywhere between 2 and 8 spaces-per-tab configured and will happily mash the tab key however many times is convenient for them to align their code or comments because they don’t understand shit about fuck when it comes to indentation (or they don’t care). Now I open their file and everything is predictably misaligned. Spaces and tabs are mixed from one line to the next, and in particularly egregious cases no tab width I can locally set on the file will make it readable because multiple different morons used different tab widths to align with tabs - sometimes within the same goddamn function or comment.
Have you ever tried to read an important technical diagram in ASCII art aligned with tabs by different people with different IDE settings? Because I have. Emphasis on tried.
AnyOldName3@lemmy.world 1 year ago
I’ve yet to find tooling that supports this. Clang format has a setting that looks like it does it, but actually does something else. If I have to press the spacebar a bunch of times each time I add an argument to a function, that’s a pain, and it’s a bigger pain to convince the people I’m working with that that pain’s less bad than using spaces everywhere and having the IDE deal with it.
Until the people making editors and auto formatters acknowledge that the obvious most sensible whitespace style is even a thing, I’m forced to do something else and be really grumpy about it.
wgs@lemmy.sdf.org 1 year ago
I understand your point of view. Personally I either copy the previous line and replace the arguments there, or insert X number of space using the repetition feature of my editor. It also has a feature that will align multiple cursors together with the “farthest” one using space, which is a killer feature for me! (See this presentation video @1:40).
zagaberoo@beehaw.org 1 year ago
Then you lose the benefit of tabs: you can’t adjust the tab width without destroying alignment. So you end up with a confusing mix of characters for no benefit.
Mixing them is the worst option.
wgs@lemmy.sdf.org 1 year ago
You might not understand how to do it properly so here’s the idea:
Tabs will let you reach the indentation level of the current block, then from here, you’ll use spaces to align stuff property. Here’s an example, where
>•••
are tabs (I’m exaggerating alignment for the sake of the example) :>•••if (condition1 == true >••• || condition2 != false) >•••{ >•••>•••struct ident people[] = [ >•••>•••>•••{ >•••>•••>•••>•••.name = "bob", >•••>•••>•••>•••.pubkey = "value1", >•••>•••>•••}, >•••>•••>•••{ >•••>•••>•••>•••.name = "alice", >•••>•••>•••>•••.pubkey = "value2", >•••>•••>•••} >•••>•••]; >•••>•••secureConnection(people[0].name, people[0].pubkey, >•••>••• people[1].name, people[1].pubkey, >•••>••• CRYPTO_ALGO_DEFAULT); >•••}
As you can see, everything will stay correctly aligned as long as it’s within the same block.
JackbyDev@programming.dev 1 year ago
You’re confusing using tabs for indentation and spaces for alignment with using tabs and spaces for indentation. This means each line starts with tabs. Next you optionally have spaces for alignment with previous lines. Then you have content (like code or comments). Because you never have a tab following a space the alignment is never destroyed by adjusting how wide a tabstop is.
zagaberoo@beehaw.org 1 year ago
I am not, it’s easy to find examples where tabs first then spaces breaks down.
JackbyDev@programming.dev 1 year ago
That example is using tabs for both indentation and alignment. The article you linked even says not using tabs for alignment is a solution.
- Do not use tabs for alignment. In such case given example should look like:
fun foo x = --->let val abs = if x > 0 ---> then x ---> else -x --->in --->--->(* ... *) --->end
zygo_histo_morpheus@programming.dev 1 year ago
It’s hard to do this consistently (especially in a team) because people might (and statistically in a large enough project, will) use the tab key for alignment since it’s faster than pressing space, or just be confused about what whitespace is tabs and what is space. Just using space everywhere is idiot proof and requires no work to micromanage. The only way to use tabs is to not align at all.
jsnfwlr@lemmy.world 1 year ago
And this is why language servers and formatters are so critical.
wgs@lemmy.sdf.org 1 year ago
I agree that it’s hard, but not impossible. This usually boils down to how Nazi people are when merging code. In a corporate environment, nobody gives a damn so yeah you gotta use whatever you want because there are already different indentation systems within the same file anyway :)
But hey, you gotta live by the changes you want to see happen, so I personally put a lot of effort in formatting my code regardless.
realharo@lemm.ee 1 year ago
Anything for indent, and fuck alignment, just put things on a new line.
wgs@lemmy.sdf.org 1 year ago
Like that ?
Man you’re a genius ;)
realharo@lemm.ee 1 year ago
Not like that, lol
Just saying, instead of this monstrosity
Just use
wgs@lemmy.sdf.org 1 year ago
When I talk about alignment it’s not about function arguments, but values, “=” signs and such. You simply cannot use tabs for that because alignment must be fixed and indentation independent:
Lmaydev@programming.dev 1 year ago
People seem to have a real issue with using new lines and I’ve never quite understod why.
It feels like a lot of those people are using notepad like applications instead of coding focused ones with collapsible regions etc.
hansl@lemmy.world 1 year ago
The way god indented.
0ops@lemm.ee 1 year ago
I almost scrolled past this one
milo128@lemm.ee 1 year ago
seconded on not aligning things. its the whole source of the problem in the first place and doesnt even serve a purpose
MajorHavoc@lemmy.world 1 year ago
It does help with reducing thrashing between edits in git diffs. Or rather, opinionated autoformatters do, which is the only reason I bother with alignment.