Seeing that Uncle Bob is making a new version of Clean Code I decided to try and find this article about the original.

  • dandi8@fedia.io
    link
    fedilink
    arrow-up
    3
    arrow-down
    9
    ·
    3 months ago

    You’re nitpicking.

    As it happens, it’s just an example to illustrate specifically the “extract to method” issues the author had.

    Of course, in a real world scenario we want to limit mutating state, so it’s likely this method would return a Commission list, which would then be used by a Use Case class which persists it.

    I’m fairly sure the advice about limiting mutating state is also in the book, though.

    At the same time, you’re likely going to have a void somewhere, because some use cases are only about mutatimg something (e.g. changing something in the database).

    • realharo@lemm.ee
      link
      fedilink
      arrow-up
      11
      ·
      edit-2
      3 months ago

      It’s not nitpicking, stuff like this is far more impactful than choosing between 5 lines vs 10 lines long methods, or whether the hasExtraCommissionsif” belongs inside or outside of calculateExtraCommissions. This kind of thing should immediately jump out at you as a red flag when you’re reading code, it’s not something to handwave away as a detail.

      • dandi8@fedia.io
        link
        fedilink
        arrow-up
        1
        arrow-down
        4
        ·
        3 months ago

        I never claimed it’s not important, I’m just saying it’s not relevant here, as there is no context to where this method was put in the code.

        As I said, it might be top-level. You have to mutate state somewhere, because that’s what applications ultimately do. You just don’t want state mutations everywhere, because that makes bad code.

        • BatmanAoD@programming.dev
          link
          fedilink
          arrow-up
          6
          ·
          3 months ago

          The whole book is like this, though, and these are specifically supposed to be examples of “good” code. The rewritten time class toward the end, a fully rewritten Java module, is a nightmare by the time Martin finishes with it. And I’m pretty sure it has a bug, though I couldn’t be bothered to type the whole thing into an editor to test it myself.