I very much agree.<p>There are some cases where short variable names make sense. In the example the loop index is called &quot;i&quot;, and that&#x27;s good. It&#x27;s good because it&#x27;s just <i>an index</i>. The only reason it&#x27;s there is because the looping construct isn&#x27;t expressive enough for the desired loop semantics, so the short name means you don&#x27;t have to care about it.<p>The use of &quot;n&quot; is also alright. It describes <i>a number</i>, for which &quot;n&quot; is a convention.<p>&quot;c&quot;, on the other hand, is a horrible name. It&#x27;s worse than &quot;collection&quot;, because it&#x27;s important and the scope is large enough that it&#x27;s hard to skim for. &quot;collection&quot;, however, is also bad. The variable doesn&#x27;t just refer to <i>a collection</i>, it refers to a collection <i>of integers</i>. Why not call it &quot;integers&quot;, or &quot;numbers&quot;?<p>I find conventions around this to really influence the readability of the average code in different programming languages. Lots of Haskell code can get away with short variables in small functions. Their scopes are small, their purpose is incredibly generic. C code often uses short variable names despite not being concise nor generic, making it unnecessarily hard to read. Common Lisp tends to use descriptive names. It&#x27;s dynamically typed and contains little type information, and yet you always know what you&#x27;re working with.