News for hackers. Stuff that matters.
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.