DEV Community

Cover image for The Case for Comma-Leading Lists

The Case for Comma-Leading Lists

Lewis Lloyd on June 13, 2020

Introduction Comma-leading lists are an objectively better presentation style. They make logical sense; the next value on the list is d...
Collapse
 
xowap profile image
Rémy 🤖

Admit it, you just wanted to make people mad

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

I read it, I saw maybe a thin benefit. But I just can't do it. It make me want to cry.

Collapse
 
hdv profile image
Hussein Duvigneau

I do similar for ternary and logic operators. It has all the benefits of the above, plus you can comment out the line without having to faff about with commenting the '&&' or '||' at the end of the previous line.

Collapse
 
artis3n profile image
Ari Kalfus • Edited

My god this actually convinced me

Collapse
 
djsullenbarger profile image
David Sullenbarger • Edited

I write SQL this way - in a SQL editor (like SQL Tools) and in my code (mostly Visual Studio). You can comment out individual items from your select and not break anything if you structure it right.

I didn't read the post so if that's what he said then I completely agree :-)

Collapse
 
dzefo profile image
Dzefo

I refuse to do this. Even though I really should

Collapse
 
moaxcp profile image
John Mercier

The git argument seems correct but doesn't it just reverse the problem? Wouldn't adding a value to the top of the list have all the same problems?

Collapse
 
tao profile image
Lewis Lloyd

adding to the top will create a [+2, -1] diff in both styles. you'll need to keep the opening bracket on its own line to avoid that.

Collapse
 
moaxcp profile image
John Mercier

So yes?

Thread Thread
 
tao profile image
Lewis Lloyd

uh, yes, but 'reverse the problem' is incorrect since it exists for both

Thread Thread
 
moaxcp profile image
John Mercier

But that depends on the style of the language or developers involved. When having the bracket on a separate line is expected, "reverse the problem" seems correct to me.

Thread Thread
 
tao profile image
Lewis Lloyd

separating the bracket will fix the problem for both styles.

logically speaking, there’s no ‘reversal’ no matter how you peg it, as you’re coupling the data with its dependent comma instead of separating them

Thread Thread
 
moaxcp profile image
John Mercier

The reversal is in the location of where the style causes potential git merge issues. With comma-first the issue can happen at the top of the list with comma-last the issue can happen at the bottom of the list.

Im not sure what you mean by removing the dependency on the comma. If the language uses commas to separate the data there is no real way to remove that dependency. It is built into the language.

Thread Thread
 
tao profile image
Lewis Lloyd

ah, i get you, so in the case where brackets are on their own lines, prepending the list will still cause a double diff

in fairness, i’d argue that appending is much more common from my personal experience, be it adding adding data to a JSON, extending an SQL query or passing more attributes to an HTML tag

good spot, though 🙂

Collapse
 
guneyozsan profile image
Guney Ozsan

I wonder the probability of encountering such a merge conflict versus the amount of code you will write (and read) in a not-so-human-readable way. The complexity introduced doesn't justify its use case.

Collapse
 
mrrcollins profile image
Ryan Collins

This is genius!

Collapse
 
lucamug profile image
lucamug • Edited

In Elm this is the norm ❤️

Collapse
 
johnnycricket profile image
John Vorwald

I hadn't encountered comma first until recently in some old code. Drove me crazy and I couldn't figure out why someone would do that. This explanation makes a lot of sense.

Collapse
 
youpiwaza profile image
max

Thought it was a creepy trolls, but it's arguably logic.

Nice one, I'll go into it

Collapse
 
moopet profile image
Ben Sinclair

I understand why people are looking at leading commas, but they're a hack to get things to work better with VCS. And you know what? That shouldn't impact how you use the language.

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

Indeed, just resolve the conflict and move on.

Collapse
 
jwwwwwww profile image
jwwwwwww

No way the code look awful

Collapse
 
tdotholla profile image
Kiel

no way to get this in an eslint/prettier config to apply automatically?

Collapse
 
appomsk profile image
Andrey

Write a shopping list in this style and give it to someone more ordinary than Haskell programmers... You will be surprised.

It's just disgusting.