What I do like about this so-called &quot;negative&quot; approach is that it represents a part of a program&#39;s documentation that is usually omitted.  You can look at the code and see exactly how and (to a certain extent) why the program does what it does, but what you can&#39;t see is all the things it doesn&#39;t do, and the reasons it doesn&#39;t do them.  This can be extremely important to know when you are thinking about modifying a program.  The change you are considering may have already been tried and rejected, but unless these sorts of negative decisions are documented in the software you may end up spinning your wheels.<br>