News for hackers. Stuff that matters.
Re:Avoid Else, Return Early (2013) by optimuspaul on Monday March 26, 2018 @09:26AM (#16678650)
Totally disagree with you.... it's funny though that I read LOC as "level of complexity" not "lines of code". I've been writing code for 30 years and I think it's jarring when the braces are on the next line, so much easier for me to parse that when it's on the same line. But everyone is entitled to their own opinion.
Re:Avoid Else, Return Early (2013) by ivanhoe on Monday March 26, 2018 @10:26AM (#16679125)
In last 20+ years I've changed the coding style many times, usually to fit the current team style. And in my experience it takes a few weeks for the brain to rewire to the new style. First you hate it, and then you get used to it, and then you're like: wow it's great. Then you switch the standards for a new project and again, the same steps. It's just a matter of habit...
Re:Avoid Else, Return Early (2013) by ohazi on Monday March 26, 2018 @01:01PM (#16680431)
Just give me an opinionated ${LANG}fmt utility to do it for me so I don't have to care and don't have to waste time arguing with other zealots. Let the tool be the zealot.
Re:Avoid Else, Return Early (2013) by georgemcbay on Monday March 26, 2018 @05:34PM (#16682835)
This is exactly how I feel, as someone who has been coding for 22 years (professionally, closer to 32 if you count when I started hacking in BASIC and 6510 assembly on the C64).

I just defer to the code formatter. That way everything is consistent looking internally, which is all I care about. I couldn't care less whether the braces are on the same or a different line or other things like that outside of the fact that I do like internal consistency within projects.

All that aside, as soon as I saw the OP title I knew (via years of exposure to bikeshedding programmers) that this thread would end up having a ton of comments on it and wasn't surprised to see it was up to 500-something and still rapidly climbing.

Re:Avoid Else, Return Early (2013) by npsimons on Monday March 26, 2018 @05:33PM (#16682827)
> Just give me an opinionated ${LANG}fmt utility to do it for me so I don't have to care and don't have to waste time arguing with other zealots. Let the tool be the zealot.

So totally this. I despise indenting with tabs with a passion, but when I heard gofmt did that I was actually pleased. There's no arguing with the official formatting utility: https://golang.org/doc/effective_go.html#formatting

Re:Avoid Else, Return Early (2013) by josephv on Monday March 26, 2018 @10:57AM (#16679359)
Pragmatic programming has lost. If you aren't a zealot about being pedantic, just move into the old-folks home.
Re:Avoid Else, Return Early (2013) by Zyst on Monday March 26, 2018 @12:59PM (#16680401)
Not at all, I'd argue this whole Tabs/Spaces, bracket placement, single/double quote discussion should be getting killed by code formatters.

At the end of the day you can do whatever you want with the code you're writing, and some pre-commit hook can run go fmt/prettier/whatever and then it'll all get standardized.

I've become a very heavy proponent of code formatters (I added prettier to the entire team) and I truly believe that talk about code formatting will never really die off, but at the end of the day you can do whatever you want on your side but still have a standardized looking codebase, and that feels extremely liberating to me.

As a PS: If you are a diehard tab proponent/different bracket placement/whatever but your team formatter configuration uses spaces instead then you can also use code formatters to do spaces -> tabs locally, say, on file open. Once you commit your file your precommit falls back to the team configuration, which removes your tabs. Everyone is happy.

Re:Avoid Else, Return Early (2013) by cortesoft on Monday March 26, 2018 @01:20PM (#16680614)
I think the person you are responding to was being sarcastic...
Re:Avoid Else, Return Early (2013) by always_good on Monday March 26, 2018 @01:03PM (#16680446)
I'd say it's the opposite. Code formatters are winning. It's becoming increasingly trite to bikeshed over formatting when projects are using code formatters.
Re:Avoid Else, Return Early (2013) by cestith on Monday March 26, 2018 @01:36PM (#16680777)
As Andy Lester recently tweeted (but said it wan't his): Should "bikeshedding" be hyphenated?

I should see if he remembers where he got it.

Re:Avoid Else, Return Early (2013) by petdance on Tuesday March 27, 2018 @10:07AM (#16688480)
I don't know. If I remembered I'd have attributed it. I noted that it wasn't mine as the next-best-thing.
Re:Avoid Else, Return Early (2013) by twic on Monday March 26, 2018 @04:11PM (#16682087)
Well, i'm a pedant about being zealous, and i am afraid we are now doomed to war eternally.
Re:Avoid Else, Return Early (2013) by ravitation on Monday March 26, 2018 @12:50PM (#16680309)
I enjoy zealous pedantry. I have strong personal opinions about something that I do a lot (especially the pedantic parts), but most of it is relatively lighthearted.
Re:Avoid Else, Return Early (2013) by brann0 on Monday March 26, 2018 @11:09AM (#16679460)
I always adapt to the style used in the project I land. I can understand people liking one over another but to reach holy wars levels of disagreement about this kind of subject is something I don't get.

Same goes to spaces vs braces, editor wars, etc.

Downside: my projects are usually a bit of a mess with mixed indentation styles :D

Re:Avoid Else, Return Early (2013) by psyc on Monday March 26, 2018 @10:02AM (#16678935)
I've also been coding 30 years. I have to use same line at work, and I use next line in my (very large) side projects. Honestly, I don't know what the difference is.
Re:Avoid Else, Return Early (2013) by JackFr on Monday March 26, 2018 @11:02AM (#16679409)
> (very large) side projects

How big once you remove all the extra newlines?

Re:Avoid Else, Return Early (2013) by ccvannorman on Monday March 26, 2018 @11:41AM (#16679680)
LOL. This is the part of the Silicon Valley episode-bar-scene where the fight breaks out.

Thank god OC didn't mention "Just like you move from tabs to spaces."

Re:Avoid Else, Return Early (2013) by torstenvl on Monday March 26, 2018 @03:01PM (#16681502)
I never understood this part of the show. I'd think that the genius inventor of a breakthrough compression algorithm whose WHOLE POINT was high quality lossless compression would prefer spaces over tabs. After all, the compression algorithm can deal with it... without the issues that result from embedding hard tabs in a source file.
Re:Avoid Else, Return Early (2013) by YSFEJ4SWJUVU6 on Monday March 26, 2018 @12:05PM (#16679877)
Well, he shouldn't have, considering it's the other way around.. :-)
Re:Avoid Else, Return Early (2013) by DanHulton on Monday March 26, 2018 @11:31AM (#16679615)
I've actually evolved a hybrid style in my personal projects - next line for functions/classes, same line for blocks.

To me, it looks weird when functions don't have that extra line of space to set off their definition, but if/while/whatever aren't special enough to need that call out.

That said, the most important factor is simple consistency. In my person projects, I have the hybrid style. At work, I use same-line-only. If I'm on a project that has next-line, we all use next-line.

Re:Avoid Else, Return Early (2013) by nitrogen on Monday March 26, 2018 @01:10PM (#16680510)
I think the Linux kernel style is similar. That was the first coding standard I somewhat adopted, but naturally have adapted to many others on different teams over time.
Re:Avoid Else, Return Early (2013) by erik_seaberg on Monday March 26, 2018 @02:03PM (#16681011)
I think this style dates back to K&R C where you (maybe) declared argument types after the parens.

  int max(a, b) 
  double a, b;
  {
      return a > b ? a : b;
  }
Re:Avoid Else, Return Early (2013) by alunchbox on Monday March 26, 2018 @09:48AM (#16678820)
python fans are going like "what are braces?"
Re:Avoid Else, Return Early (2013) by lisper on Monday March 26, 2018 @11:01AM (#16679399)
The irony is that Python actually has open-braces, but they're spelled ":" instead of "{". And the syntax effectively enforces K&R style.

When I write Python I end every block with a "pass" statement so that emacs can auto-indent my code properly. The "pass" statement thus effectively becomes a close-brace. It drives Pythonistas into conniptions, but I never have to worry about reverse-engineering a block of code to figure out how to restore the proper block boundaries after a cut-and-paste has screwed up the indentation.

Re:Avoid Else, Return Early (2013) by kamaal on Monday March 26, 2018 @12:00PM (#16679846)
That's the bad part of not having braces.

If boundaries exist they need to be clear. One shouldn't have to count the tabs that make up the level of indentation.

Its already a challenge reading code. Counting invisible tabs makes it even worse.

Re:Avoid Else, Return Early (2013) by lisper on Monday March 26, 2018 @12:16PM (#16679973)
Well, you don't have to literally count them, you use the spatial reasoning hardware built in to your retina and visual cortex to just see that this bit of code is further over to the right than that bit of code. But of course that only works for pieces of code that are small enough to fit in your field of view.
Re:Avoid Else, Return Early (2013) by p1esk on Monday March 26, 2018 @03:07PM (#16681550)
All code pieces should be small enough to fit in your field of view :)
Re:Avoid Else, Return Early (2013) by lisper on Monday March 26, 2018 @03:16PM (#16681619)
Try to tell that to my current client :-(
Re:Avoid Else, Return Early (2013) by dorgo on Monday March 26, 2018 @01:56PM (#16680959)
On the other hand high counts of invisible tabs may be a hint that the code needs refactoring..
Re:Avoid Else, Return Early (2013) by tomn on Monday March 26, 2018 @05:49PM (#16682954)
Enforces K&R style? I don't know what you mean...

    def foo(bar)\
    :
        if (bar > 5)\
        :
            return bar + 1;
        #
        else\
        :
            return bar - 1;
        #
    #
Re:Avoid Else, Return Early (2013) by lisper on Monday March 26, 2018 @05:59PM (#16683031)
I'm not sure whether to laugh or cry
Re:Avoid Else, Return Early (2013) by true_religion on Monday March 26, 2018 @12:40PM (#16680196)
Python specific IDEs will smartly indent code upon copy and paste.
Re:Avoid Else, Return Early (2013) by lisper on Monday March 26, 2018 @12:58PM (#16680398)
Sure, but if you somehow manage to screw up the indentation then no IDE can possibly restore it for you because the information needed to do it is lost. And there are a LOT of ways that indentation can get screwed up. If your code ever leaves the Python ecosystem (e.g. gets published on the web) then all bets are off because the entire digital world outside of the Python-sphere is built on the assumption that whitespace is fungible.
Re:Avoid Else, Return Early (2013) by true_religion on Tuesday March 27, 2018 @12:18AM (#16685195)
I don't know about that. I've never screwed up identaton so much that I couldn't correct it simply by selecting everything I just pasted and hitting tab a couple times in my IDE (PyCharm).

Similarly, copying code from StackOverflow, Github and random blogs have all worked without any issues.

So it can't be as easy as you imply.

Re:Avoid Else, Return Early (2013) by lisper on Tuesday March 27, 2018 @01:16AM (#16685461)
What can I say? It happened to me a lot before I started using the pass trick.
Re:Avoid Else, Return Early (2013) by pleasecalllater on Monday March 26, 2018 @02:22PM (#16681166)
Nope. Just try insert code formatter with 8 spaces into code formatted with 4, or 2. IDE will make something that compiles, it doesn't mean that it works properly.
Re:Avoid Else, Return Early (2013) by true_religion on Tuesday March 27, 2018 @12:24AM (#16685227)
Just tried that---typing like mad in a wordpad, with 12 spaces of indentation, then copying into PyCharm and it worked.

Mixed spaces and tabs as a next go, and it worked too---converting the pasted tabs into spaces of my style.

Smart-tabbing is pretty smart.

Granted, I knew that so long as the indents were proper (i.e it compiles), that pasting at that point would give valid code but... I can't see how using braces would have been different. Just because it compiles, doesn't mean it works. I've pasted javascript incorrectly multiple time to produce valid, but incorrect for my needs code.

Re:Avoid Else, Return Early (2013) by jonny_eh on Monday March 26, 2018 @01:09PM (#16680495)
How does an IDE know if a given line belongs in an if block or not?
Re:Avoid Else, Return Early (2013) by true_religion on Tuesday March 27, 2018 @12:21AM (#16685211)
It'll indent up to the most relevant valid block as possible, given your cursor at the moment. If you click within an if block, it'll indent into that if-block.

The indentation strategy also looks to produce syntactically valid code, so long as what you are pasting lacked indentation errors.

Re:Avoid Else, Return Early (2013) by your-nanny on Monday March 26, 2018 @10:21PM (#16684628)
That is clever. Ugly, yes. But clever.
Re:Avoid Else, Return Early (2013) by kabdib on Monday March 26, 2018 @09:52AM (#16678846)
That's fine -- the Python folks have their own share of religious wars (starting with: tabs, or spaces?) :-)
Re:Avoid Else, Return Early (2013) by tom_mellior on Monday March 26, 2018 @10:25AM (#16679116)
Do they? All the Python folks I've ever seen express an opinion on style have said "follow PEP 8".

Unsurprisingly, PEP 8 does have a rule for tabs vs. spaces: https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces (spaces, of course)

Re:Avoid Else, Return Early (2013) by sireat on Monday March 26, 2018 @02:17PM (#16681125)
I love Python but as a long time C programmer I can't understand the preference for spaces in PEP 8.

Tabs are semantic and only take one key press for movement back and forth and to delete.

If you see 1 tab you know it meant one indentation level. With spaces you have to think.

Plus with spaces you are stuck with 2/4/8 spacing(unless you reformat), with tabs you can configure your editor to your preferences.

Re:Avoid Else, Return Early (2013) by slaman on Monday March 26, 2018 @04:01PM (#16681996)
> with tabs you can configure your editor to your preferences.

Configure 1 tab to be 4 spaces.

Sometimes it's easier to go with the flow. I like tabs for the reasons you mentioned, but fixed-width spaces are a bit better for some reasons too. IDE's can do the heavy lifting of re-formatting indentation levels and converting tabs to spaces for me, and it means if I cat a file on a remote server regardless of the bash tab width settings or if I'm in your code or the stdlib it will all make sense.

Re:Avoid Else, Return Early (2013) by tom_mellior on Tuesday March 27, 2018 @04:44AM (#16686502)
> with tabs you can configure your editor to your preferences

Except that you can't because people using tabs will invariably start mixing tabs and spaces because they can't separate indentation from layout. So the code will be messed up unless you configure your editor to someone else's preferences. Also, I'm sure there is some obscure git setting to de-uglify tab users' diffs, but I'd rather not find out.

Re:Avoid Else, Return Early (2013) by e12e on Monday March 26, 2018 @05:14PM (#16682661)
Tabs are semantic. But, when you start down that route, why not dictate record-separotor as replacement for closing brace/block etc?
Re:Avoid Else, Return Early (2013) by pleasecalllater on Monday March 26, 2018 @02:25PM (#16681199)
The PEP8 myth is quite funny. Almost all people I've met who were repeating "follow the pep8" like a mantra, have never read it. The main idea behind pep8 is: be consistent... however even the python library is not consistent. And it looks like no one cares. There was a great moment to make it nice and consistent - creating the python3, where many incompatible changes were introduced. Instead, the mess is like it was, and people repeat the mantra "follow pep8".

Before you say that I'm crazy... please, go and read pep8.

Re:Avoid Else, Return Early (2013) by tom_mellior on Tuesday March 27, 2018 @04:45AM (#16686503)
> please, go and read pep8

OK. What am I looking for?

Re:Avoid Else, Return Early (2013) by jwilk on Monday March 26, 2018 @11:07AM (#16679444)
As a data point, I don't follow (all of) PEP-8.

But tabs vs. spaces is indeed a bad analogy, because of course it's 4 spaces. ;-P

pycodestyle, the Python style checker, has a few checks disabled by default (because there's no consensus they're good ideas), and even some mutually exclusive ones:

https://pycodestyle.readthedocs.io/en/latest/intro.html#erro...

Re:Avoid Else, Return Early (2013) by gambiting on Monday March 26, 2018 @10:06AM (#16678963)
As a C++ programmer I can assure you, I know plenty of individuals with very strong opinions on tabs vs spaces debate.
Re:Avoid Else, Return Early (2013) by drawkbox on Monday March 26, 2018 @10:48AM (#16679276)
And spaces sub factions/opinions on 2 vs 4 spaces.

The correct answer is whatever the project is already using, unless it is new and then you luckily get to choose.

Re:Avoid Else, Return Early (2013) by bunderbunder on Monday March 26, 2018 @10:39AM (#16679205)
These religious wars can largely be swept away with one simple, practical question: What is going to result in less noise in pull requests and the commit history, given that nowadays everyone uses a different editor with different configuration defaults, and is going to result in less time in pull requests squabbling over these kinds of formatting issues, given that nowadays everyone uses a different editor with different configuration defaults?

Tabs vs. Spaces has a fairly good answer that flows out of this way of looking at things. There is a counter-argument to that answer, but it is invalidated if you move toward conventions for argument lists and chained method calls that are also designed to limit noise in the source control system.

IMO, the argument about bracing also has a practical, non-religious answer once you start looking at your coding conventions this way.

Re:Avoid Else, Return Early (2013) by TomMarius on Monday March 26, 2018 @10:06AM (#16678959)
Tabs, everyone can configure them however they want. :-)
Re:Avoid Else, Return Early (2013) by RobertRoberts on Monday March 26, 2018 @10:53AM (#16679321)
I hate being able to configure stuff, I want other people to boss me around from anywhere in the world! Their opinion matters on my computer!
[dead]
Re:Avoid Else, Return Early (2013) by YSFEJ4SWJUVU6 on Monday March 26, 2018 @12:08PM (#16679903)
Why would you ever half-indent a block? For alignment you should of course use spaces (for whole alignment, not just the end, to be very clear).
Re:Avoid Else, Return Early (2013) by kevin_thibedeau on Monday March 26, 2018 @02:14PM (#16681095)
The war is over. Py3 doesn't allow mixed spaces and tabs in the same file. You choose your side and never get to skirmish with the other one.
Re:Avoid Else, Return Early (2013) by jjgreen on Monday March 26, 2018 @11:21AM (#16679544)
Both!
Re:Avoid Else, Return Early (2013) by sethgecko on Monday March 26, 2018 @11:20AM (#16679539)

    >>> from __future__ import braces
    SyntaxError: not a chance
Re:Avoid Else, Return Early (2013) by zerostar07 on Monday March 26, 2018 @10:47AM (#16679265)
but biased fans of both would argue that opening and closing a block in the same indent level (allman-style) is closer to python.
Re:Avoid Else, Return Early (2013) by laythea on Monday March 26, 2018 @02:33PM (#16681261)
Tell them braces are visual indicators of blocks of logic, enabling reasoning more easily on a multi-statement level.
Re:Avoid Else, Return Early (2013) by threatofrain on Monday March 26, 2018 @02:40PM (#16681318)
Lambdas shouldn't be more than one line anyway.
Re:Avoid Else, Return Early (2013) by Bombthecat on Monday March 26, 2018 @02:49PM (#16681406)
I remember in my programming classes at school my teacher was always like: guys!there is space on the right! Use it!

PS: he coded at Hercules the graphic cards back in the day before he got into teaching.

Re:Avoid Else, Return Early (2013) by z3t4 on Monday March 26, 2018 @04:26PM (#16682233)
What is "Hercules the graphic cards" (I only found GPU's when trying Google)
Re:Avoid Else, Return Early (2013) by mr_toad on Monday March 26, 2018 @05:04PM (#16682583)
The Graphics Card (HGC) was essentially an MDA-compatible monochrome card with an added all-points-addressable graphics mode.

https://en.wikipedia.org/wiki/Hercules_Graphics_Card

Re:Avoid Else, Return Early (2013) by kstenerud on Monday March 26, 2018 @09:53AM (#16678855)
I've done a number of informal tests on friends and family over the years regarding brace placement, and it's always been the same: For someone with NO experience programming (i.e. looking at what to them seems like a bunch of gobbletygoop - and what's a "text editor"?), adjacent braces make it appear more readable than same-line braces.

It's only people who cut their teeth on adjacent bracing that find it more readable.

Re:Avoid Else, Return Early (2013) by falcolas on Monday March 26, 2018 @10:18AM (#16679058)
Why optimize for the lowest common denominator?

I've seen both, and the reduction in vertical whitespace matters more to me than the readability to an untrained individual.

Re:Avoid Else, Return Early (2013) by hailk on Monday March 26, 2018 @11:03AM (#16679412)
I'll be flipping the point around by saying that if you are concerned about vertical whitespace reduction, you should probably look at the granularity of your files (debatable based on programming environment). Also we could be catering to the lowest common denominator by worrying about people with untrained symmetric sensibility.
Re:Avoid Else, Return Early (2013) by RobertRoberts on Monday March 26, 2018 @10:54AM (#16679328)
>Why optimize for the lowest common denominator?

You seem to be erroneously equating a coincidence with a preference.

Re:Avoid Else, Return Early (2013) by z3t4 on Monday March 26, 2018 @04:33PM (#16682312)
Tip: Tilt your wide screen so you get more vertical real estate.
Re:Avoid Else, Return Early (2013) by ainiriand on Monday March 26, 2018 @10:59AM (#16679376)
'I've done a number of informal tests on friends and family'

You should have a pretty cool family!

Re:Avoid Else, Return Early (2013) by boomlinde on Tuesday March 27, 2018 @10:22AM (#16688653)
The level of complexity obviously doesn't change with a line break