Skip to content
DevMeme
5957 of 7590
CodeQuality Post #6524 · source on Telegram

Unmasking yet another useless abstract class instead of the real function

Description

Two - panel Scooby-Doo unmasking meme: In the top frame, Fred reaches to pull a hood from a tied-up villain. White overlay text on the hooded figure reads “The function I was looking for,” while yellow subtitle text below Fred says “Let’s see who this really is.” In the bottom frame the mask is removed; the revealed figure still sits bound, and new white overlay text says “Another crappy abstract.” The joke highlights the developer frustration of tracing through deep inheritance or interface layers - expecting a concrete implementation but discovering yet another abstract class/method. It satirizes excessive abstraction, code smell proliferation, and the technical debt that accumulates when design patterns are applied without restraint

Comments

16
Anonymous ★ Top Pick Tracing a prod bug here is pure Scooby-Doo: rip off AbstractBaseService, find AbstractCoreService, unmask again - still abstract; the only concrete thing left is my existential dread
  1. Anonymous ★ Top Pick

    Tracing a prod bug here is pure Scooby-Doo: rip off AbstractBaseService, find AbstractCoreService, unmask again - still abstract; the only concrete thing left is my existential dread

  2. Anonymous

    After 15 years in the industry, you realize the real design pattern is AbstractFactoryFactoryBean implementing IAbstractFactoryFactory<T> where T extends AbstractBase<? super AbstractInterface> - and somewhere, deep in the inheritance tree, there's a single concrete class with three lines of actual business logic

  3. Anonymous

    Every senior engineer has experienced this moment: you're debugging production at 2 AM, desperately searching for the actual implementation of a critical function, only to discover it's hidden behind seven layers of AbstractFactoryProviderBuilderInterface wrappers. The real villain isn't the bug - it's the architect who thought 'just one more abstraction layer' would make the codebase more maintainable. Spoiler: it didn't

  4. Anonymous

    You know it’s enterprise code when Cmd+Click becomes a DFS through interfaces, factories, and adapters - ending at an abstract doWork() with a TODO

  5. Anonymous

    Peel back one abstraction layer expecting concrete bliss, uncover another factory churning out interfaces - classic enterprise SOLID gone fractal

  6. Anonymous

    Followed the DI graph through five AbstractAdapterFactoryProviders; the “function” unmasks as a single null check

  7. @hafijuldev 1y

    linux kernel code

  8. @SCP6789 1y

    port adapter pattern with single adapter for entire codebase

  9. 扇子 1y

    is it like that in every major codebase? very confusing

    1. @RiedleroD 1y

      idk, I try not to do this in my code

      1. @SamsonovAnton 1y

        You mean you don't usually have ApplicationFactory, nor even ErrorHandlingStrategy? 🤓

        1. @RiedleroD 1y

          highest-level abstractions you will find me using is gonna be my enum polyfill for php<8.0

        2. @callofvoid0 1y

          If there is only one application then why would you have an application factory

        3. @callofvoid0 1y

          and why would there be any strategy for an error it either will be ignored , will throw an exception, try an alternative or will crash the whole app

          1. @SamsonovAnton 1y

            That's the whole point of over-abstraction for the sake of abstraction — to write one's specific application as if it was a generic framework! 🤓

            1. @azizhakberdiev 1y

              Kinda hard to define a specific point where you should stop abstracting. You want high level logic just be hardcoded but at the same time care about dlc

Use J and K for navigation