<MyRusakov.ru />

Создание Интернет-магазина на PHP и MySQL

Создание Интернет-магазина на PHP и MySQL

Видеокурс "Создание Интернет-магазина на PHP и MySQL" - это уникальный курс по созданию Интернет-магазина с нуля. Особенностью данного курса является то, что создание идёт с самого начала, то есть от идеи. Далее создаётся дизайн всех необходимых страниц, после делается их вёрстка. Затем создаётся движок на PHP и MySQL, после делается Admin-панель и, наконец, готовый сайт размещается в Интернете.

Адрес созданного в этом курсе сайта: http://storedvd.ru

Всё создание сайта будет происходить на Ваших глазах, поэтому Вы легко сможете повторить весь процесс создания сложного функционального сайта уже при разработке своего портала.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Как проводить рефакторинг?

Как проводить рефакторинг?

В предыдущей статье мы с Вами разобрали что такое рефакторинг. А в этой статье мы разберём пример рефакторинга конкретного работающего кода. После прочтения этой статьи Вы узнаете, как проводить рефакторинг.

Предположим, у нас есть такой PHP-код:

<?php
  $array = array();
  for ($i = 0; $i < 100000; $i++) {
    $array[$i] = $i;
  }
  $result = 0;
  for ($i = 0; $i < count($array); $i++) {
    $result += round($array[$i] * sqrt($i));
  }
  echo $result;
?>

Это правильно работающий код, однако, он далеко не идеален. Наша с Вами задача увеличить быстродействие и уменьшить количество кода. Что касается стилистики, то тут проблем никаких нет: всё понятно и всё прекрасно читается.

Начнём с быстродействия. Я уже писал, как узнать время выполнения скрипта, поэтому повторяться не буду.

Итак, замерив время работы данного скрипта у меня получилось примерно 0.30 секунды. Первое, что можно сразу исправить - это создание массива. Дело в том, что в PHP есть очень простая функция range(), которая делает всё ровно так же, что и у нас, только быстрее:

<?php
  $array = range(0, 99999);
  $result = 0;
  for ($i = 0; $i < count($array); $i++) {
    $result += round($array[$i] * sqrt($i));
  }
  echo $result;
?>

Время выполнения уже 0.24 секунды, неплохо выиграли, плюс количество кода резко сократилось.

Теперь разберём очень популярный вид дублирования, а именно в указании условия выхода из цикла. В данном коде мы в каждой итерации вычисляем длину массива. Но зачем? Ведь она постоянная и никак не меняется. Эту "ошибку" допускают практически все профессионалы, в том числе, и я. В основном, просто по привычке, потому что так пишут все. И стоит отметить, если массив не очень большой, то с точки зрения читабельности так и стоит оставить, но когда массив огромный, то надо писать так:

<?php
  $array = range(0, 99999);
  $result = 0;
  $count = count($array);
  for ($i = 0; $i < $count; $i++) {
    $result += round($array[$i] * sqrt($i));
  }
  echo $result;
?>

Время выполнения уже 0.17 секунды, а это уже большой выигрыш во времени.

Теперь займёмся количеством кода. Мы уже с Вами в этом направлении поработали, и нам осталось лишь убрать ненужные фигурные скобки у цикла. Они там просто не нужны, поскольку внутри цикла всего лишь один оператор. В результате, код получился таким:

<?php
  $array = range(0, 99999);
  $result = 0;
  $count = count($array);
  for ($i = 0; $i < $count; $i++) $result += round($array[$i] * sqrt($i));
  echo $result;
?>

Можно было ещё, конечно, вообще обойтись без массива, а в цикле подставлять вместо $array[$i], просто $i, но предположим, что по условиям задачи нам нужно было создать массив. Всё, рефакторинг мы завершили и давайте подведём итог. Производительность скрипта увеличилась почти в 2 раза, количество строк уменьшилось в 1.5 раза. Как видите, даже в таком, казалось бы, простом скрипте, мы умудрились так сильно всё улучшить. А уж про те же движки, я вообще молчу, там можно вечно проводить рефакторинг.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (1):

malina95 malina95 05.04.2013 13:50:59

Спасибо, статья полезная. А про $count = count($array); я знал давно, и уже вошло в привычку так делать.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.