• bleistift2@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    13
    ·
    edit-2
    2 days ago

    Boy, I recently had to look into the Java backend to figure out… something. I can’t remember.

    It turns out that they needed to inject a bean into their class which was itself calling a factory, which according to documentation, instantiated three other classes just to make a fucking HTTP request! What’s worse, that clusterfuck of a (fairly standard) library required the base URL to be declared separately from the actual paths, and both the base URL needed to end with a slash, and each path must begin with one. Every reasonable programmer would assume that this is a mistake because the final path would end up with two slashes, but the library actually required that.

    Meanwhile, frontend: fetch('url').then(r => r.json()).then(beHappy)

    • aaaaaaaaargh@feddit.org
      link
      fedilink
      arrow-up
      7
      ·
      edit-2
      2 days ago

      But you always get something in return for all those layers and layers of abstraction. For me most of the time it was a lot of Java/Spring features I didn’t know existed and after that I realized they were pointless.

      • DeprecatedCompatV2@programming.dev
        link
        fedilink
        arrow-up
        5
        ·
        1 day ago

        Noooo, you have to override 50% of the class methods to hard couple your filter’s implementation to an event-bus-style bean with Spring in the package name to avoid NIH! What if someone needs to extend your Authentication Provider in the future but can only use a limited quota of keystrokes to implement their ticket as an inobvious side-effect? How else will they add the aud from your JWT to the MDC? Some kind of pointcut??

    • luciferofastora@feddit.org
      link
      fedilink
      arrow-up
      2
      ·
      2 days ago

      and both the base URL needed to end with a slash, and each path must begin with one.

      …so the respective library functions each sanitizes the input meets their requirement, pre- and appending slashes as needed?

      …right?

      Every reasonable programmer would assume that this is a mistake because the final path would end up with two slashes, but the library actually required that.

      For fuck’s sake

      I’m guessing they have two instances of string validation, the developer for each of which helpfully decided “I’ll make sure there’s a slash, idk if the other end checks it” and then a third function that trims the slashes from the parts and concatenates them with a slash for a separator.

      But, man, is this ever stupid.