Common sense: 1) the smaller the syntactic fragment, the less commenting should be necessary, 2) the more declarative the syntactic fragment, the less commenting should be necessary. Large imperative chunks of code is a better target for comments than small composable monadic queries encapsulated in functions. In general expressions are clearer than statements. LINQ queries already read like plain english, that's part of their beauty: they are often self-documenting. There bass is right. For large chunks of imperative monolithic side-effecting code, clearly mortals would appreciate comments. Then there is the distinction between code (re)use vs code change. A piece of code may not require comments to be used but may require "internal comments" to be refactoring-friendly. It's common sense...