title: Eiffel: Best practices with getters return Void if object not found?
body: <p>What is the <strong>best practice in Eiffel to return an object from a function if not found</strong>. I saw that many collection like ARRAY for example base the not found behaviour on precondition for example or other function. </p>
  
  <p>Many languages base their politics returning Void (or null) when an object hasn't been found. In Eiffel that would imply to have a detachable object as result? </p>
  
  <h2>Null politic</h2>
  
  <pre><code>item_at_index (index: INTEGER): detachable FOO
      do
          if bar_collection.valid_index(i) then
              Result := bar_collection.item_at(i)
          else
              Result := Void 
          end
      end
  </code></pre>
  
  <h2>Never null politic</h2>
  
  <pre><code>item_at_index (index: INTEGER): detachable FOO
      require
          bar_collection.valid_index(i)
      do
          Result := bar_collection.item_at(i)
      end
  </code></pre>