• partial_accumen@lemmy.world
    link
    fedilink
    arrow-up
    46
    ·
    12 hours ago

    If it helps, I’m from the other side of networking and infra. You could swap the labels and make the meme accurate for me.

    In the mid 1980s I learn the BASIC programming command GOTO and fell in love for a lifetime. If you look any anything I used to write in Ruby script or today in Python you’ll see my love affair with “if” “elfi” and “else” continues. My universe is nested “if” statements all the way down.

      • chicken@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        6
        arrow-down
        2
        ·
        7 hours ago

        Early returns seems good, but personally I find code more confusing when things get arbitrarily separated out into functions, because to read it you have to keep scrolling back and forth between different parts of the page and either remembering where the other part is or typing a lot with ctrl-f, there’s more variables to hold results, and if the section of code to be separated into a function is picked just because of nesting depth reasons then it’s likely the function name isn’t going to describe what it does very clearly, leading to more scrolling and more having to keep track of things in your head.

        • MonkderVierte@lemmy.zip
          link
          fedilink
          arrow-up
          1
          ·
          13 minutes ago

          I’ve had this too. It was cured by being forced to work with Java and enhance a PHP-framework. Dear god, the php-framework.
          But it literally increased my mental “stack size”. My shell and python scripts also got better.

          Ah, and also keep the “do one thing and do it good” tenet also to functions.

          • chicken@lemmy.dbzer0.com
            link
            fedilink
            arrow-up
            3
            ·
            4 hours ago

            How? I’m using vscodium. There are right click menus that bring you to function definitions and uses, but that isn’t necessarily faster than scrolling around and is still way more friction and more stuff you can’t see to hold in your short term memory.

            IDEs also have collapse/expand features which make nested or longer functions easier to navigate.

            • wols@lemmy.zip
              link
              fedilink
              arrow-up
              2
              ·
              2 hours ago

              In a decent IDE you can CTRL+click (or similar) on a function name to go to its definition. This is absolutely faster than scrolling, especially if you’ve got more than a couple dozen lines in the current file.

              When splitting functionality into smaller functions you would ideally not have to keep implementation details of other functions in short term memory.
              You only need to understand/remember the contents of the current function. Does it do what the name suggests? Cool, you’re done checking it.

              Of course, the “2 hard problems in computer science” meme exists for a reason - it’s not always straight forward to come up with good names. But in my experience, even when coming up with a fitting name is difficult, reducing nesting usually helps a lot with comprehension, mainly because it reduces scope and thereby the amount of information you need to hold in your head.
              The larger a function gets, the harder it is to check that it does what it’s supposed to.

              There is of course a balance to strike - trying to force every single function to be at most 3 lines is likely to make the code more difficult to understand and is, in my eyes, almost pathological. But a function that covers more than a screen is the other extreme that should be avoided when practical.

    • Zos_Kia@jlai.lu
      link
      fedilink
      arrow-up
      7
      ·
      10 hours ago

      It was fashionable at a time to avoid ifs and other imperative structures, but I tend to like them. Functional is nice and all but I like my code to be smart in the way it works, not in the way it’s written. Nested ifs are readable, collapsible, and easy to make sense of at a glance, there’s often nothing wrong with using them.

    • otacon239@lemmy.world
      link
      fedilink
      arrow-up
      5
      ·
      11 hours ago

      Same here! I can put together a half-descent network in just a few hours, but even programming simple stuff on microcontrollers is a major endeavor. And the documentation is usually terrible or nonexistent. And the tutorials are usually barely able to cover basic questions. At least in the space of networking, there’s enough context clues in the UI that I can piece together the solution I need.

    • db2@lemmy.world
      link
      fedilink
      arrow-up
      5
      arrow-down
      1
      ·
      11 hours ago

      My universe is nested “if” statements all the way down

      Also known as AI 🤣