Читабельный код — залог успеха

Не важно на каком языке и что Вы пишите — рано или поздно Вам придется любой свой код менять и улучшать. Конечно это при условии что Вы не пишите одноразовые салфетки — тогда да, можно использовать и выкинуть, но выкидывать код клиенту не нужно)

Это примеры нехорошего кода, который нужно искоренять у себя из подкорочки даже.

Переукорачивание кода

А теперь скажи читатель, бросив косой взгляд на это — с каким набором значений в переменной мы будем для $type_content==TYPE_DISEASE_ID в конце концов…

$table = ($type_content==TYPE_DISEASE_ID) ? self::CONTENT_DISEASES_CACHES_TABLE : self::CONTENT_SITES_CACHES_TABLE;
$id_content_field = ($table == self::CONTENT_SITES_CACHES_TABLE) ? 'site' : 'disease';
$fields = ($type_content != TYPE_DISEASE_ID) ? 'type_good, rating, additional->\'payment\' AS payment' : 'type_good, rating, type, id_review_parent';

Использование нескольких псевдонимов для одного и того-же

Можно еще парочку запилить, только лучше все свести к одному все-таки… чтобы не угадывать

if ((isset($type_or_criteria['friendly']) && $type_or_criteria['friendly']) 
    || (isset($type_or_criteria['url']) && $type_or_criteria['url'])
) {
  $tmp  = @$type_or_criteria['friendly'] ? $type_or_criteria['friendly'] : $type_or_criteria['url'];
  $name = '/' . (int) $type_or_criteria['id'] . '/' . urlencode($tmp);
}

Использование одноразовых переменных

Очевидно «графоманская» штука. К ней я для сравнения даже улучшенную версию приведу

Плохо

$limit = (int) $limit;
$offset = (int) $offset;
$sql = ' SELECT ' . $fields . ' FROM ' . static::DB_TABLE;
$where = $conditions ? ' WHERE ' . $conditions : '';
$order_by = ' ORDER BY ' . ($order_by ? $order_by : 'id');
$limit = ($limit && $limit > 0) ? ' LIMIT ' . $limit : '';
$offset = ($offset && $offset > 0) ? ' OFFSET ' . $offset : '';
$query = $sql . $where . $order_by . $limit . $offset;
$result = DB::query($query, 'alist');

Хорошо

$sql = ' SELECT ' . $fields . ' FROM ' . static::DB_TABLE;
if ($conditions) $sql .= ' WHERE ' . $conditions;
$sql .=  ' ORDER BY ' . ($order_by ? $order_by : 'id');
if ((int)$limit) $sql .= ' LIMIT ' . (int) $limit;
if ((int)$offset) $sql .= ' OFFSET ' . (int) $offset;
$result = DB::query($sql, 'alist');

Циклы пустышки

Была проверка — не проходим — ну значит закомментим. А цикл оставим. Правильно было бы разобраться какая проверка сбоит.

class ContentSitesCriteria
{
  private $_criteria = array();
 
  public function __construct(array $criteria = array())
  {
    if (!$criteria) {
       return true;
    }
    foreach($criteria AS $field_name => $field_val) {
       if (!isset(ContentSitesColumns::$_COLUMNS[$field_name])) {
          //throw new Exception ('bad column ' . $field_name);
	  continue;
       }
    }
    $this->_criteria = $criteria;
  }
}

Оставить комментарий

XHTML: Вы можете использовать такие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">