magic_lobster_party

  • 0 Posts
  • 15 Comments
Joined 3 months ago
cake
Cake day: August 15th, 2024

help-circle



  • I agree, and I count that as “key information that’s difficult to understand from the code”.

    IMO, comments should be used to provide value to the code. If they’re used too much, then readers of the code will more likely stop reading them altogether. They already got what they need from the code itself and the comments usually don’t add much value.

    If they’re sparse, then that’s a good indication they’re important and shouldn’t be missed.


  • I think comments are good as a last resort when it’s difficult to communicate the intention of the code with other means.

    If I find code that’s hard to understand, I’ll first try to find better variable or function names. Often this is enough.

    If it’s still too difficult to understand, I try to restructure the code to better communicate the flow of the code.

    If that doesn’t help (or is too difficult), then I might add a comment explaining key information that’s difficult to understand from the code.



  • In your example, the declaration of ArrayList look like:

    public class ArrayList extends AbstractList implements List {
    }
    

    The dependence on AbstractList is public. Any public method in AbstractList is also accessible from the outside. It opens up for tricky dependencies that can be difficult to unravel.

    Compare it with my solution:

    public class ArrayList implements List {
        private AbstractList = new AbstractList();
    }
    

    Nothing about the internals of ArrayList is exposed. You’re free to change the internals however you want. There’s no chance any outside code will depend on this implementation detail.







  • 0.02% means you’re saving a fraction of a second for every hour of runtime. A lot of adding up is required to make it significant enough for anyone to notice.

    Better to spend that time and effort on things that actually bring value. These kind of micro optimizations can also make the code unnecessarily complicated and difficult to work with, which is a hindrance for the optimizations that truly matter.