Wanna hear a story? The consultancy firm I work for has been hired to work on a WPF project for a big Fashion Industry giant.

We are talking of their most important project yet, the ones the "buyers" use to order them their products globally, for each of the retail stores this Fashion giant has around the world. Do you want to know what I found? Wel, come my sweet summer child.

DB: not even a single foreign key. Impossibile to understand without any priopr working experience on the application. Six "quantity" tables to keep aligned with values that will dictate the quantities to be sent to production (we are talking SKUs here: shoes, bags..)

BE: autogenerated controllers using T4 templates. Inputs directly serialized in headers. Async logging (i.e. await Logger.Error(ex)). Entities returned as response to the front end, no DTOs whatsoever.

WPF: riddled with code behind and third party components (dev express) and Business Logic that should belong to the Business Layer. No real api client, just a highly customized "Rest Helper". No error reporting or dealing with exceptions. Multiple endpoints call to get data that would be combined into one single model which happens to be the one needed by the UI. No save function: a timer checks the components for changes and autosaves them every x seconds. Saving for the most critical part occurring when switching cells or rows, often resulting in race conditions at DB level.

What do you think of this piece of shit?

  • 5
    Not surprised.
    Just being big does not guarantee good practices and shitty code can still do the work.

    Just look at the latest billion dollar fines for GDPR, I am pretty sure they did not grow out of good quality code :/
  • 3
    Async logging.....that codebase must be a maintenance hell
  • 1
    Anna Wintour laughed so hard at this she dropped her tennis racket.
  • 1
    I'd just like to let you guys imagine, just for a second, that the main tab of your apllication is filled with multiple panels whose values depend on the selection of one or more interface elements (i.e. products).

    Now, let's add to that that every new product selection fires a total refresh of said panels with several async calls to the BE and that, sometimes, the event triggering all of this is called multiple times even thought no selection actually changed.

    What would you do?

    A) burn the place and run
    B) ask for a cospicuos amount of money to deal with such crap
    C) write application 2.0

    Just guess which one happened.
  • 2
    @no-oxygen if it is anything other than option C then you are screwed my friend :)

    WPF without proper handling is worse than getting hit by a 10ton machine lol

    I would run if C was not the option...
  • 0
    I'm gonna ask the stupid question. What's wrong with async logging this way?

    Using async appenders is okay right?
Add Comment