4 ms·
To play at devil's advocate, please don't. Otherwise you should have written your comment like this: To me , consistency is important . All of my c
by jashkenas 15y ago
To play at devil's advocate, please don't. Otherwise you should have written your comment like this:
To me
, consistency is important
. All of my codebase is traditional comma postfix
, so I'll keep using that
; however
, maybe with some new projects I'll try on the comma prefix [...]
... using typography in a typographically sensible way is far more important to readability than an arbitrary "consistency" of punctation. We're humans, not computers, after all.
- asolove 15y agoWhy does nobody ever mention the obvious solution? Separate var statements. They're always correct, they copy without any editing, and the "var"s line up to show that it's a block of assignments the same as commas or whitespace.
- chc 15y agoYou can only put var at the beginning of variable declarations, but there are many other places that commas are used as a separator. So that "solution" doesn't apply in general.
- asolove 15y agoI think I might have explained myself poorly. I'm suggesting using separate var statements for each assignment, e.g.: var a = 2; var b = 4; var c = { blah: "whatever" }; Leaving out a semicolon has no effect. They can be copied without any fuss. It's easy.
- ricardobeat 15y agoProblems with semi-colons usually arise in object usage. So your solution is very specific. x = {[ { id: 1, data: 0 }, { id: 2, data: 0 } ], [ { id: 3, data: 0 }, { id: 4, data: 0 } ]}
- slexaxton 15y agoMost people also apply this to object literals. There are no var statements in this situation.
- mnutt 15y agoWith separate var statements, you never end up with this situation: var foo = 1, bar = 2 baz = 3 In 90% of the cases the code will run the same whether or not there is a comma on line 2, but in the other 10% you will get burned in odd ways now that `baz` is a global variable.
- Isofarro 15y agoJS Lint is your friend in this case. It will log that * There's a missing semicolon on line 2 * There's a missing semicolon on line 3 * baz was being used before it was defined. That's just in a global context. When it's in a function you get a little more: * the baz line is indented too far - because it's being interpreted as a new statement. Sure, you could eyeball your code looking for this. Or just use an automated tool that'd do it for you
- andywhite37 15y agoSeparate vars is what I prefer to do, but JSLint actually recommends that you change multiple var statements to a single var with variables separated by commas (and with a semicolon at the end of course!). (And also all var declarations at the top of the function...).
- rapind 15y agoThis. I admire code that reads like english. Leading commas are a terrible idea in my humble opinion. It's so ugly to me that the whole idea seems like it could be a troll.
- UnFleshedOne 15y agoI use leading commas in any list that is not one liner in C++. This way the code looks pretty, and that is way more important that code that reads like english. :) (I shudder from dread every time I look at applescript...)
- slowpoke 15y agoAnd let me play the advocatus Dei , because that actually looks quite readable . Though, more seriously, using English (a natural language) to try to make an appeal to absurdity about the format style of a formal language, is plain absurd.
- amackera 15y agoEven in your example you were consistent, so was I. Inconsistency would be To me, consistency is important . All of my codebase is traditional comma postfix , so I'll keep using that; however , maybe [...] Which is more confusing than either of our consistent examples. Unless I misunderstood your point.