3-promise rule for functions
<p>I need help remembering what book I read this from, It might have been Effective C++ or something, but I don't remember. I was reading something that basically stated that functions have 3 promises:</p>

<ol>
<li>Validate input parameters to make sure they meet the expected input requirements</li>
<li>Guaranteed to respect &amp; maintain invariants</li>
<li>Validate output parameters (returns &amp; out params)</li>
</ol>

<p>The book also had some nice names for this but for the life of me I don't remember. It bothered me enough that I had to come to Stackoverflow to see if someone might recognize this and help me remember...</p>
