Yeah, the problem with outlawing &quot;retval&quot; in particular is that there&#x27;s no good variable name in this situation:<p><pre><code>  int sum(Collection&lt;Integer&gt; c)
  {
    int retval = 0;
    for(int i = 0; i &lt; c.size(); i++){
        retval += c.get(i);
    }
    return retval;
  }
</code></pre>
What the hell should I call retval? If I call it sum, that&#x27;s redundant with the method name. Also, while it might work in Java, it would be more dangerous in a language like Ruby where the equivalent code:<p><pre><code>  def sum(c)
    sum = 0
    c.each do |e| retval += e end
    sum
  end
</code></pre>
would, due to lexical scoping, make it impossible to call the method recursively.