Novice

Антипаттерн: Спагетти-код

Рубрика: Профессиональный php
web разработка, php скрипты

По аналогии с паттернами проектирования (как надо проектировать системы), появилось еще одно интересное направление программистской мысли – антипаттерны (самые популярные ошибки совершаемые программистами).

Самым часто встречающимся из них является антипаттерн “Код-спагетти”, с него и начну.
Больше всего этому антипаттерну подвержены небольшие программы, написанные без использования объектно-ориентированной модели. Почему это так – поймете позже.

Основной отличительной особенностью этого антипаттерна является слабая структурированность кода (поэтому он такое название и получил). Другими словами код содержит в себе все вперемешку. Вследствие чего, даже тот человек, который написал этот код, через некоторое время его уже не разберет. Такие системы позже будет очень сложно поддерживать и расширять (иногда легче даже будет переписать заново), не говоря уже о возможности использовать повторно некоторые куски, такие как модули (если их там выделить можно будет), в других системах.
Читать далее »

 #  #  #  #  #  #  #  #  #  #
Novice

Рефакторинг: параметризация метода

Рубрика: Продвинутый php
web разработка, php скрипты

Бывают такие ситуации, когда несколько методов выполняют одни и те же действия, но с разными значениями внутри. Например, один метод увеличивает значение стоимости товара на 10, а другой – на 30 единиц. И тут конечно лучше было бы создать просто один метод, но для разных значений, который принимал бы параметр, сколько прибавлять единиц к стоимости – 10 или 30, а может и 50 и т.д. Отсюда и название приема – параметризация метода.

Тем самым мы устраним дублированный код и добавим гибкость в объект, т.к. он сможет обрабатывать другие ситуации, нежели 10 и 30. Т.е. любое число, разумеется.

Вот пример: Читать далее »

 #  #  #  #  #  #  #  #  #  #
Novice

Рефакторинг: замена массива объектом

Рубрика: Продвинутый php
web разработка, php скрипты

Некоторые (особенно начинающие или неопытные) разработчики хранят в массивах разнородную информацию. Например:

$arr = Array();

$arr[0] = “Mike”; // имя человека
$arr[1] = 30;      // возраст
$arr[2] = 180;    // рост

Хорошо, что в PHP есть ассоциативные массивы, которые позволили бы нам написать вот так: Читать далее »

 #  #  #  #  #  #  #  #  #  #
Novice

Шаблон проектирования Адаптер.

Рубрика: Профессиональный php
web разработка, php скрипты

Основное назначение шаблона проектирования Адаптер понятно из названия – он адаптирует элементы для работы в различных средах. Если говорить более конкретно, то адаптер – это класс-обортка для основного класса, предоставляющий другой способ доступа к нему.

Теперь подробно.

Обычно, этот шаблон используют в одном из трех случаев:

  1. Когда нужно чтобы один класс работал с другими классами, непохожими друг на друга. В этом случае для основного класса создается адаптер для одного из двух других (или для каждого). Ниже подробнее опишу это.
  2. Приспособить один из старых компонентов для работы в текущей системе или просто обновить интерфейс какого-то класса.

Читать далее »

 #  #  #  #  #  #  #  #  #  #
Novice

Рефакторинг: введение объясняющих переменных

Рубрика: Продвинутый php
web разработка, php скрипты

Иногда в исходном коде выражения бывают настолько сложными, что если даже и мы их написали, то по прошествии какого-то времени не можем понять, что мы имели в виду в том или ином участке кода.

Например, рассмотрим следующее выражение (правда, оно не настолько сложное, но выражения посложнее я покажу далее):

if ((strpos(strtoupper($platform), "MAC") !== false) &&
    (strpos(strtoupper($browser),  "IE")  !== false) &&
     wasInitialized() && $resize > 0 ) {
        // что-то делаем ...
}

Чтобы нам легче было понять логическое выражение в условии, попробуем упростить его с помощью нашего сегодняшнего приема: Читать далее »

 #  #  #  #  #  #  #  #  #  #
Novice

Паттерн Singleton

Рубрика: Профессиональный php
web разработка, php скрипты

Эта статья будет первой из раздела “Профессиональный php” и начнет она в нем тему шаблонов проектирования. Если простыми словами, то шаблон проектирования это код, который решает какую-то задачу, с которой программисты часто сталкиваются (задача реализации какой-то логики). Если сейчас не понятно, то дальше поймете, на примерах.

Начну я, как и все, с шаблона Singleton (“одиночка”, если по-русски). Но, сначала, небольшое отступление. Если Вы заходили на сайт блога, то могли заметить – справа появилось голосование. У меня просьба ко всем читателям нашего блога – оставить там свое мнение, ведь от его результатов будет зависеть направление развития блога. Спасибо :)

Теперь продолжу про singleton. Как я уже заметил выше, назначение каждого шаблона – это решение какой-то задачи.
Читать далее »

 #  #  #  #  #  #  #  #  #  #
Novice

Рефакторинг: замена метода объектом

Рубрика: Продвинутый php
web разработка, php скрипты

Представим себе такую ситуацию… Есть у нас метод (функция-член класса), в котором довольно много строк кода. И этот код использует локальные переменные таким образом, что невозможно применить прием группировки кода в отдельную функцию.

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

Чтобы было понятнее, как всегда пример: Читать далее »

 #  #  #  #  #  #  #  #  #  #

Страница 10 из 28« Первая...«89101112»...Последняя »


© 2008 - 2010 i-novice.net | Все права защищены.