Ноя 19

Диаграммы классов. Ассоциации.

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

В прошлой статье про UML, я описал в общих чертах диаграмму одиночного класса. Сегодня я постараюсь описать то, как связывать диаграммы отдельных классов в единую картинку. Но прежде, я хотел бы сделать небольшое теоретическое отступление, особо важное для понимания сути диаграмм, в начале пути.

Как я раньше уже замечал, основное назначение диаграмм – это представление структуры вашего кода в наглядном и понятном другим программистам виде. Но, я не сказал в каком контексте это “знание о программе” следует понимать.

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

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

Популярность: 5%

 #  #  #  #  #  #  #  #  #  #
Ноя 17

Рефакторинг: встраивание класса

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

Представим себе такую ситуацию, когда мы провели серию приемов рефакторинга и в результате оказалось, что от класса становится мало пользы, т.к. в нем осталось мало функций. Проблема, которая может быть решена с помощью сегодняшнего приема, - это устранение малого класса. Хотя это, конечно, не проблема. Но все же :)

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

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

Допустим у нас есть два класса - Person и PhoneNumber. При этом класс Person использует методы класса PhoneNumber:

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

Популярность: 8%

 #  #  #  #  #  #  #  #  #  #
Ноя 15

Проектирование - это просто. Основы UML.

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

Все, кто занимается разработкой ПО достаточно долго, уже много раз слышали про такую стадию разработки программы, как проектирование. Тем не менее, эта стадия практически всегда остается только в умах программистов, причем в довольно абстрактном виде. У каждого свои ассоциации с этим термином, но в основном, под ним кроется что-то скучное, ненужное и трудное для понимания. На самом деле все гораздо проще и в этом цикле статьей я Вам это докажу. Начиная с самых очевидных азов проектирования, очевидных даже для новичков, мы дойдем до современных методов(я надеюсь :) ), которые применяются в больших проектах класса Enterprise.

Так как любая программа является системой, в том или ином виде, то в ней можно выделить составные части и определить их взаимосвязи. Для таких описаний используется общепринятый язык UML (Unified Modeling Language) или Унифицированный Язык Моделирования. В самых общих чертах, любая информация, записанная на этом языке, представляет собой набор диаграмм, которые довольно легко читаются.

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

Популярность: 12%

 #  #  #  #  #  #  #  #  #  #
Ноя 13

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

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

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

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

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

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

Популярность: 15%

 #  #  #  #  #  #  #  #  #  #
Ноя 12

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

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

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

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

Вот пример:

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

Популярность: 14%

 #  #  #  #  #  #  #  #  #  #
Ноя 9

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

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

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

$arr = Array();

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

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

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

Популярность: 23%

 #  #  #  #  #  #  #  #  #  #
Ноя 6

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

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

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

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

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

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

Популярность: 23%

 #  #  #  #  #  #  #  #  #  #

Страница 1 из 1912345678910»...Последняя »