• Ephera@lemmy.ml
    link
    fedilink
    arrow-up
    10
    ·
    3 months ago

    I mainly found it annoying while writing code, because the lack of braces makes it difficult to tell when a scope ends. Plenty times, I’ve wanted to add something to the end of a for-loop, but had too little indentation.
    Usually this means I get a runtime error, because it can’t access some variable from the loop-scope. But worst case, it only executes once after the loop and I don’t notice the problem.

    Another big thing I miss when not having explicit braces, is opening up new/anonymous scopes to isolate variables, which helps prevent mistakes down the line + reduces code complexity.

    For example, this is a thing I do quite regularly:

    let client = {
        let client = new Client()
    
        let timeout = config.load("client.timeout")
        client.set_timeout(timeout)
    
        client //implicit return value of this scope when evaluated as an expression
    }
    
    client.request_something()
    

    It allows me to visually group the initialization code for the client and I don’t need to have the timeout variable in scope afterwards. Depending on the language, you can also have the client variable mutable inside the scope and then immutable outside.

    Yes, this could be pulled out as a function to achieve something similar, but in my experience people (including me) will often just not do that, because it’s only the timeout variable or whatever.

    • Kache@lemm.ee
      link
      fedilink
      arrow-up
      1
      ·
      3 months ago

      wanted to add something to the end of a for-loop, but had too little indentation

      To address this, I prefer reducing length & depth of nested code, so the for/while is rarely ever not visible along with everything inside it. Others have success with editors that draw indentation lines.

      opening up new/anonymous scopes

      I occasionally use Python nested functions for this purpose