I am reading through Master Joomla! 1.5 book, and that i notice within the Revue model includes a function like this

// model
function getRevues() {
  $db =& $this->_db;
  if( empty($this->_revues) ) // ?????
  {
    $query = $this->_buildQuery();
    $limitstart = $this->getState('limitstart');
    $limit = $this->getState('limit');

    $this->_revues = $this->_getLimit($query, $limitstart, $limit);
  }
  return $this->_revues;
}

// view
....
revues =& model->getRevues();

why would you use _revues variable at school model? Basically remove _revues variable and rewrite getRevues function the following:

function getRevues() {
  $db =& $this->_db;

    $query = $this->_buildQuery();
    $limitstart = $this->getState('limitstart');
    $limit = $this->getState('limit');

    $revues = $this->_getLimit($query, $limitstart, $limit);

  return &$revues;
}

what distinction between 2 functions?

Within the second one, you always execute the database query. In the first you cache the outcomes (in $this->_revues)that might increase performance from the application. Therefore the database is just hit should you refer to this as method the very first time.