Comments in code are quite often a code smell. Let’s see what is suboptimal about comments and talk about some strategies to avoid them.
Comments should be used when it’s hard to convey the intent using only code. For example, maybe there’s some unintuitive border case that must handled. Then it could be useful to add some explanation with a comment.
I also like to add comments when I find some clever solution/workaround on the web. For example, some stack overflow answer or Wikipedia page of some algorithm.
Comments are also useful when something appears to be wrong but there’s a good reason why it’s like that
Totally agree, that’s why I also mentioned this in the article.
Very often good code that is self-explanatory does not need any comments at all and if it does, the comment should describe why it has been implemented this way instead of just repeating what the code already says.