Исходный код
elseif ( $manufacturer_id) {
$db->query( "SELECT manufacturer_id, mf_name FROM #__{vm}_manufacturer WHERE manufacturer_id='$manufacturer_id'");
$db->next_record();
$mainframe->setPageTitle( $db->f("mf_name") );
echo "Izdeliya ot";
}
Что не так в исходном коде
Этот короткий фрагмент кода знает о двух независимых вещах: что делать, если передан идентификатор производителя, и как получить название производителя из базы данных. Как элемент второго знания я бы выделил поиск производителя в базе данных.
Как улучшить исходный код
elseif( $manufacturer_id) {
$db->query( "SELECT manufacturer_id, mf_name FROM #__{vm}_manufacturer WHERE manufacturer_id='$manufacturer_id'");
$db->next_record();
$mainframe->setPageTitle( $db->f("mf_name") );
echo "Izdeliya ot";
}
function mf_name($manufacturer_id) {
$db = mf_find($manufacturer_id, 'mf_name');
return $db->f('mf_name');
}
function mf_find($manufacturer_id, $select = '*') {
$db->query("SELECT $select FROM #__{vm}_manufacturer WHERE manufacturer_id='$manufacturer_id'");
$db->next_record();
return $db;
}
Обычно принято поднимать из базы не по одному полю за запрос, а сразу все необходимые поля, которые могут понадобиться при рендеринге страницы, так как накладные расходы на каждый запрос к базе данных относительно высоки.
Теория
- Принцип единственного знания
- Рефакторинг «извлечение метода»