• @[email protected]
    link
    fedilink
    9
    edit-2
    3 months ago

    EDIT: read the article turns out it’s super useful… It gives insight into decision table which is a pattern I did not know about until recently…

    Is this really a recurring design pattern for y’all?

    I mean, you can just use a switch. anyways I’ll read the article and see ;)

    • Carighan Maconar
      link
      83 months ago

      Decision tables are nice. They hide the important part of the logic away out of view of another programmer trying to figure out a bug in the code.

      Very helpful! You take longer to find and fix bugs, and potentially miss a few extra ones because of stuff like this. Increased tech debt. Highly recommended! 👍

      • @[email protected]
        link
        fedilink
        23 months ago

        I mean, you can just right click “Definition” in VSCode and see how it works… It’s not that inconvenient.

        It’s easy to read, write and refactor so I don’t really see what you mean.

        • @[email protected]
          link
          fedilink
          6
          edit-2
          3 months ago

          What’s fun is determining which function in that list of functions actually is the one where the bug happens and where. I don’t know about other langauges, but it’s quite inconvenient to debug one-linres since they are tougher to step through. Not hard, but certainly more bothersome.

          I’m also not a huge fan of un-named functions so their functionality/conditions aren’t clear from the naming, it’s largely okay here since the conditional list is fairly simple and it uses only AND comparisons. They quickly become mentally troublesome when you have OR mixed in along with the changing booleans depending on which condition in the list you are looking at.

          At the end of the day though, unit tests should make sure the right driver is returned for the right conditions. That way, you know it works, and the solution is resistant to refactor mishaps.

    • JonC
      link
      fedilink
      English
      33 months ago

      Also take a look at the Specification Pattern for something similar.

      That’s something I would only use if the logic becomes very complex, but it can help break things down nicely in those cases.

    • @[email protected]
      link
      fedilink
      -33 months ago

      I can’t find it right now, but there is some explanation in “Clean Code” why switches shouldn’t be used all over the place.

      • magic_lobster_party
        link
        fedilink
        33 months ago

        In case you’re wondering about the down votes, many think Clean Code is not a good book. It got a few good advice, but it also got bad advice disguised as good advice.

        I don’t think switch statements should always be avoided. There are cases where polymorphism makes things more difficult to maintain. Saying polymorphism should be used over switch statements is not a good advice.

        Here’s an article going into more detail why we should stop recommending Clean Code: https://qntm.org/clean

      • @djnattyp
        link
        33 months ago

        Google for “replace conditional with polymorphism”.

        Just checked and it is in “Clean Code” - Chaper 17; Section G23 “Prefer Polymorphism to if/else or switch/case”.

        • @[email protected]
          link
          fedilink
          43 months ago

          This is really terrible advice. Sometimes it’s better to do that, but definitely not in the example from this article.

          If anyone says you should always prefer polymorphism to switches they are a bloody idiot.

          • @PushButton
            link
            33 months ago

            I always love watching people falling for Clown-Bob’s advises…

            Let’s go, let’s eat shit on toasts! It’s just a matter of how thin you can spread it to hide the taste…