<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

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

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

Подписавшись по 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); я знал давно, и уже вошло в привычку так делать.

Ответить

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