• SlopppyEngineer@lemmy.world
    link
    fedilink
    arrow-up
    103
    ·
    2 years ago

    Best comment ever was “It used to work like this but person at client demanded it work like that on this date” when the client complained it shouldn’t work like that.

    • conciselyverbose@sh.itjust.works
      link
      fedilink
      arrow-up
      106
      ·
      2 years ago

      That’s basically what comments are most useful for. When you’re doing something that’s not obvious, and want to make sure the “why” doesn’t get lost to time.

      • ChickenLadyLovesLife@lemmy.world
        link
        fedilink
        English
        arrow-up
        11
        ·
        2 years ago

        I spent a year making my company’s iOS apps accessible (meaning usable for the blind and people with vision disabilities). I had to do a lot of weird shit either because of bugs in Apple’s VoiceOver technology or because of the strange way in which our code base was broken up into modules (some of which I did not have access to) and I would always put in comments explaining why I was doing what I was doing. The guy doing code review and merges would always just remove my comments (without any other changes) because he felt that not only were comments unnecessary but also they were a “code smell” indicating professional incompetence. I feel sorry for whoever had to deal with that stuff at a later point.

        • lad@programming.dev
          link
          fedilink
          English
          arrow-up
          2
          ·
          2 years ago

          Well, this is shitty

          I hope the reviewer did not also squash commits, and the next programmer would be able to at least dig what was there.

          Doing changes after some rockstar dev implemented some really complex service, but left no clues as to what does what is so frustrating, and I can never be sure that I don’t break anything in a different place completely

          • ChickenLadyLovesLife@lemmy.world
            link
            fedilink
            English
            arrow-up
            4
            ·
            2 years ago

            I meant to say commits and not merges, and yes he removed the comments before committing. It made no difference in long run because every new release broke all the accessibility stuff anyway. It’s amazing how little developers can be made to care about blind people - almost as little as managers. The only reason my company cared at all was they were facing million-dollar-a-month fines from the FCC.

    • T. Hex@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      54
      arrow-down
      1
      ·
      2 years ago

      The best comments are “why” comments, the runner up is “how” comments if high-level enough, and maybe just don’t write “what” comments at all because everyone reading your code knows how to read code.

    • jaybone@lemmy.world
      link
      fedilink
      arrow-up
      11
      ·
      2 years ago

      That’s actually the perfect comment, because if anyone ever comes back to fuck with you about it, it’s explained right there. Then you turn it right back around on management and watch them run around like chickens with their heads cut off.

      • lad@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 years ago

        Out management used to tell us, that even if head of department had committed to doing something some way, there’s no way or need to hold them accountable. It’s just that situation has changed, and nobody should bat an eye.

        To be fair, they also did not pressure us much for the missed deadlines or missing features, because it was indeed the result of the situation described in the first paragraph

  • yetAnotherUser@discuss.tchncs.de
    link
    fedilink
    arrow-up
    94
    arrow-down
    1
    ·
    2 years ago
    /*
     * Gets stupidFuckingInteger
     *
     * @returns stupidFuckingInteger
    */
    public double getStupidFuckingInteger() {
        return stupidFuckingInteger;
    }
    
    
    • Shoe@lemm.ee
      link
      fedilink
      arrow-up
      8
      ·
      2 years ago

      Have reviewed 16 year old code for a very well known company in the last week with this exact comment peppered throughout, alongside delightfully helpful comments like:

      // do not delete or change this it just works

      // TODO temporary fix added 12/09/11 to fix incident must be removed ASAP

      // CAUTION this returns false here instead of true like it normally does, not sure why

      // if true then matched to valid account not is true

  • ImpulseDrive42@lemmy.world
    link
    fedilink
    arrow-up
    52
    arrow-down
    4
    ·
    2 years ago

    I had a old job that told me that code is “self documenting” if you write it “good enough”. And that comments were unnecessary.

    It always annoyed the heck out of me. Comments are imo more helpful than hurtful typically.

    Is it just me? Or am I weird? Lol.

    • Vigge93@lemmy.world
      link
      fedilink
      arrow-up
      20
      ·
      2 years ago

      Comment should describe “why?”, not “how?”, or “what?”, and only when the “why?” is not intuitive.

      The problem with comments arise when you update the code but not the comments. This leads to incorrect comments, which might do more harm than no comments at all.

      E.g. Good comment: “This workaround is due to a bug in xyz”

      Bad comment: “Set variable x to value y”

      Note: this only concerns code comments, docstrings are still a good idea, as long as they are maintained

      • balp@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        2 years ago

        Docstring are user documentation, not comments. User documentation, with examples (tests), is always useful.

        • Vigge93@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          2 years ago

          As long as it’s maintained. Wrong documentation can often be worse than no documentation.

    • homura1650@lemm.ee
      link
      fedilink
      arrow-up
      10
      ·
      2 years ago

      Have you ever worked in a place where every function/field needed a comment? Most of those comments end up being “This is the <variable name>, or this does <method name>”. Beyond, being useless, those comments are counter productive. The amount of screen space they take up (even if greyed out by the IDE) significantly hurts legability.

        • EpeeGnome@lemm.ee
          link
          fedilink
          English
          arrow-up
          4
          ·
          2 years ago

          The issue with having mandatory useless comments is that any actually useful comments get lost in the noise.

          • Alexstarfire@lemmy.world
            link
            fedilink
            arrow-up
            3
            ·
            2 years ago

            I get what you’re saying. Perhaps I just haven’t had too many variables and such that have had such comments. VsCode shows the comments on hover when you’re in other parts of the code base. Which makes most any comment useful because something that is obvious in one part of the code isn’t immediately obvious in another. Though, that necessitates making comments that actually help you figure that out.

    • Ephera@lemmy.ml
      link
      fedilink
      arrow-up
      9
      ·
      edit-2
      2 years ago

      In my opinion, it strongly depends on what you’re coding.

      Low-level code where you need to initialize array indices to represent certain flags? Absolutely comment the living shit out of that. → See response.
      High-level code where you’re just plumbing different libraries? Hell no, the code is just as easily readable as a comment.

      I do also think that, no matter where you lie in this spectrum, there is always merit to improving code to reduce the need for documentation:

      • Rather than typing out the specification, write a unit/integration test.
      • Rather than describing that a function should only be called in a certain way, make it impossible to do it wrongly by modelling this in your type system.
      • Rather than adding a comment to describe what a block of code does, pull it out into a separate function.
      • Rather than explaining how a snippet of code works, try to simplify it, so this becomes obvious.

      The thing with documentation is that it merely makes it easier to learn about complexity, whereas a code improvement may eliminate this complexity or the need to know about it, because the compiler/test will remember.

      This does not mean you should avoid comments like they’re actively bad. As many others said, particularly the “why” is not expressable in code. Sometimes, it is also genuinely not possible to clean up a snippet of code enough that it becomes digestable.
      But it is still a good idea, when you feel the need to leave a comment that explains something else than the “why”, to consider for a moment, if there’s not some code improvement you should be doing instead.

    • Daxtron2@startrek.website
      link
      fedilink
      arrow-up
      7
      ·
      2 years ago

      Its definitely a balance. Good code shouldn’t need much commenting, but sometimes you have to do something for a reason that isn’t immediately obvious and that’s when comments are most useful. If you’re just explaining what a snippet does instead of why you’re doing it that way, there’s probably more work to be done.

    • perviouslyiner@lemmy.world
      link
      fedilink
      arrow-up
      7
      ·
      edit-2
      2 years ago

      What they mean is that the variable names and function names are documentation.

      For example changing “for( i in getList() )” to “for( patient in getTodaysAppointments() )” is giving the reader more information that might negate the need for a comment.

    • humbletightband@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      7
      ·
      2 years ago

      I follow these simple rules and encourage my colleagues to do so

      1. If I’m just shuffling jsons, then yes, the code should be self documented. If it’s not, the code should be rewritten.

      2. If I implement some complex logic or algorithm, then the documentation should be written both to tests and in the code. Tests should be as dull as possible.

      3. If I write multithreading, the start, interruption, end, and shared variables should be clearly indicated by all means that I have: comment, documentation, code clearness. Tests should be repeated and waits should not be over 50ms.

    • Andromxda 🇺🇦🇵🇸🇹🇼@lemmy.dbzer0.comOP
      link
      fedilink
      English
      arrow-up
      6
      ·
      2 years ago

      I absolutely agree, and I too hate this stupid idea of “good code documenting itself” and “comments being unnecessary”.
      I have a theory where this comes from. It was probably some manager, who has never written a single line of code, who thought that comments were a waste of time, and employees should instead focus on writing code. By telling them that “good code documents itself”, they could also just put the blame on their employees.
      “Either you don’t need comments or your code sucks because it’s not self-documenting”
      Managers are dumb, and they will never realize that spending a bit of time on writing useful comments may later actually save countless hours, when the project is taken over by a different team, or the people who initially created it, don’t work at the company anymore.

      • ChickenLadyLovesLife@lemmy.world
        link
        fedilink
        English
        arrow-up
        5
        ·
        2 years ago

        I’ve never had a manager that was even aware of the comments vs. no comments issue. If I ever had, I would have just told them that a lack of comments makes the original coder harder to replace.

    • ඞmir@lemmy.ml
      link
      fedilink
      arrow-up
      5
      ·
      2 years ago

      Code is not self documenting when decision trees are created based on some methodology that’s not extremely obvious

  • nikaaa@lemmy.world
    link
    fedilink
    arrow-up
    26
    arrow-down
    7
    ·
    2 years ago

    Good code is self-explanatory. You should only comment your code if it does something unexpectedly complicated.

    That being said, it’s always a good idea to write a manual, about how to use the code. Don’t document how it works, because those who can code will understand it anyways, and those who can’t, have no need to understand it.

    • TORFdot0@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 years ago

      This is true, but it’s easier and faster to parse plain English and so if I don’t adequately comment my code the first time. I will be commenting it when I have to return to it for whatever reason. Honestly the second round of commenting is more verbose and clearer than the function x does y style of comments I tend to make when coding the first time

  • zerofk@lemm.ee
    link
    fedilink
    arrow-up
    3
    ·
    2 years ago

    Our code base is filled with “//constructor”, “//destructor”, “//assignment”, or the ever enlightening “Foo GetFoo(); // GetFoo”.

    This is not what they mean by self-documenting code.

  • ClassifiedPancake@discuss.tchncs.de
    link
    fedilink
    arrow-up
    2
    ·
    2 years ago

    At work we let Typescript and descriptive naming document our code. Only when something is a workaround or otherwise weird will we add comments. So far it has worked great for us.

  • Maalus@lemmy.world
    link
    fedilink
    arrow-up
    15
    arrow-down
    13
    ·
    2 years ago

    How bad programmers comment their code. Good programmers don’t comment at all and let the code speak for itself, leaving commenting to some obscure and arcane implementation the coder left in after a week long binge on caffeine and gummy bears.

    • BombOmOm@lemmy.world
      link
      fedilink
      English
      arrow-up
      10
      ·
      2 years ago

      Code should absolutely speak for itself. But the occasional comment is still good to explain the ‘why’ of the code when the why isn’t very obvious, often due to a niche requirement. Also any time you have to break out a hack, that needs comments up the ass, what was the bug, what URL did you find the fix at, why does this hack work, etc etc. It’s very satisfying to go back and remove those hacks after they are no longer needed, often because the underlying technology fixed the bug that had to be hacked around.

      • NotMyOldRedditName@lemmy.world
        link
        fedilink
        arrow-up
        3
        arrow-down
        1
        ·
        2 years ago

        It definitely feels great when I get to remove the

        //hack abc due to bug in library xyz version 1.4.5, issue tracker says it’s fixed in 1.5.0. - link

  • KillingTimeItself@lemmy.dbzer0.comBanned
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    7
    ·
    2 years ago

    this is why i very rarely comment with descriptive comments. If you’re reading my code and don’t understand what it is, even with how shit it is, you have no business reading whatever fucking crackpot shit im writing.