this post was submitted on 05 Sep 2023
156 points (78.9% liked)

Programming

16769 readers
100 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 28 points 11 months ago* (last edited 11 months ago) (2 children)

Anything for indent (barely matters, as long as the editor forces it to stay consistent), and fuck alignment, just put things on a new line.

[–] [email protected] 16 points 11 months ago* (last edited 11 months ago) (2 children)
struct Ident arr = [
{
.id
= 0,
.name
= "Bob",
.pubkey
= "",
.privkey
= ""
},
{
.id
= 1,
.name
= "Alice",
.pubkey
= "",
.privkey
= ""
}
];
[–] [email protected] 16 points 11 months ago* (last edited 11 months ago) (2 children)

Not like that, lol

Just saying, instead of this monstrosity

CreateOrderRequest(user,
                   productDetails,
                   pricingCalculator,
                   order => order.internalNumber)

Just use

CreateOrderRequest(
    user,
    ...

Putting the first argument on a separate line.

Same if you have an if using a bunch of and (one condition per line, first one on a new line instead of same line as the if) and similar situations.

[–] [email protected] 8 points 11 months 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.

[–] [email protected] 6 points 11 months ago* (last edited 11 months ago) (3 children)

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:

CreateOrderRequest(
    user,
    productDetails     => order.detail,
    pricingCalculator  => DEFAULT_CALCULATOR,
    order              => order.internalNumber)
[–] [email protected] 10 points 11 months ago* (last edited 11 months ago) (1 children)

I normally avoid that too, I find it hurts readability more than helps, plus a proper IDE will separate it with color anyway.

But yeah, the newline comment doesn't apply to this.

[–] [email protected] 1 points 11 months ago (1 children)

To each their own indeed. But my rule of thumb is: only use tabs when there's no other character before it (aka, start of line).

[–] [email protected] 1 points 11 months ago

The emacs wiki agrees and has the correct take on this: https://www.emacswiki.org/emacs/SmartTabs

It seems like this basic guideline, tabs to indent and spaces to align, solves the problem for everyone. It doesn’t matter what your tab width is, it’ll look “right” regardless.

[–] [email protected] 6 points 11 months ago (1 children)

This kind of "manual" alignment should be avoided for many reasons including the fact that adding/removing/changing of one parameter here may force you to modify multiple lines which on it's own is annoying but this will also show up in the diff during review making it harder to grep what was actually changed.

[–] [email protected] 2 points 11 months ago

I personally favor code readability over patch readability. But I reckon this is a matter of preference so I can understand how you might not like that.

[–] [email protected] 4 points 11 months ago

Yeah I agree I don’t find alignment very useful. It’s more work for dubious benefit, and god forbid you change one of the lines.

[–] [email protected] 6 points 11 months ago (1 children)
[–] [email protected] 1 points 11 months ago

I almost scrolled past this one

[–] [email protected] 0 points 11 months ago (1 children)

seconded on not aligning things. its the whole source of the problem in the first place and doesnt even serve a purpose

[–] [email protected] 1 points 11 months 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.