title: Scala toString: parenthesize or not?
body: <p>I'd like this thread to be some kind of summary of pros/cons for overriding and calling <code>toString</code> with or without empty parentheses, because this thing still confuses me sometimes, even though I've been into Scala for quite a while.</p>
  
  <p>So which one is preferable over another? Comments from Scala geeks, officials and OCD paranoids are highly appreciated.</p>
  
  <p>Pros to <code>toString</code>:</p>
  
  <ul>
  <li>seems to be an obvious and natural choice at the first glance;</li>
  <li>most cases are trivial and just construct Strings on the fly without ever modifying internal state;</li>
  <li><p>another common case is to delegate method call to the wrapped abstraction:</p>
  
  <pre><code>override def toString = underlying.toString
  </code></pre></li>
  </ul>
  
  <p>Pros to <code>toString()</code>:</p>
  
  <ul>
  <li>definitely not "accessor-like" name (that's how IntelliJ IDEA inspector complains every once in a while);</li>
  <li>might imply some CPU or I/O work (in cases where counting every <code>System.arrayCopy</code> call is crucial to performance);</li>
  <li>even might imply some mutable state changing (consider an example when first <code>toString</code> call is expensive, so it is cached internally to yield quicker calls in future).</li>
  </ul>
  
  <p>So what's the best practice? Am I still missing something?</p>
  
  <p><em>Update</em>: this question is related specifically to <code>toString</code> which is defined on every JVM object, so I was hoping to find the <em>best practice</em>, if it ever exists.</p>