Принципы разработки програмных пакетов
книга

Принципы разработки програмных пакетов : проектирование повторно используемых компонентов

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

Автор: Маттиас Нобак

Форматы: PDF

Издательство: ДМК Пресс

Год: 2020

Место издания: Москва

ISBN: 978-5-97060-793-0

Страниц: 275

Артикул: 95158

Возрастная маркировка: 16+

Электронная книга
899

Краткая аннотация книги "Принципы разработки програмных пакетов"

Существует масса литературы и онлайн-ресурсов, посвященных дизайну классов, но информацию о проектировании программных пакетов найти не так просто. Книга Маттиаса Нобака, профессионального PHP-разработчика, призвана восполнить этот пробел. В ней рассказывается о принципах повторного использования и распространения компонентов, также известных как пакеты, и предлагается ряд полезных техник по организации кода в группы любого размера. Вы узнаете о том, какие классы должны быть внутри пакета, как использовать принципы связности и зацепления, как облегчить поддержку пакета. Издание адресовано программистам, использующим объектно-ориентированный язык для создания приложений. Представленные в книге примеры кода поясняют отдельные технические моментыт и упрощают понимание материала.

Содержание книги "Принципы разработки програмных пакетов : проектирование повторно используемых компонентов"


Предисловие от издательства
Об авторе
О техническом рецензенте
Благодарности
Введение
ЧАСТЬ I. ПРОЕКТИРОВАНИЕ К ЛАССОВ
Глава 1 . Принцип единственной ответственности
Класс со множественными ответственностями
Ответственности порождают причины для изменения
Рефакторинг: использование взаимодействующих классов
Преимущества единственной ответственности
Пакеты и принцип единственной ответственности
Заключение
Глава 2. Принцип открытости/закрытости
Класс, который закрыт для расширения
Рефакторинг: абстрактная фабрика
Рефакторинг: делаем абстрактную фабрику
открытой для расширения
Замена или декорирование фабрики кодировщика
Рефакторинг: полиморфизм
Пакеты и принцип открытости/закрытости
Заключение
Глава 3. Принцип подстановки Барбары Лисков
Нарушение: производный класс не имеет реализации всех методов
Нарушение: разные замены возвращают вещи разных типов
Допустимы более конкретные типы возвращаемых значений
Нарушение: производный класс менее снисходителен касательно аргументов метода
Нарушение: тайное программирование более специфического типа
Пакеты и принцип подстановки Барбары Лисков
Заключение
Глава 4. Принцип разделения интерфейса
Нарушение: многократные варианты использования
Рефакторинг: отдельные интерфейсы и множественное наследование
Нарушение: никакого интерфейса, просто класс
Рефакторинг: добавление интерфейсов заголовка и роли
Пакеты и принцип разделения интерфейса
Заключение
Глава 5. Принцип инверсии зависимостей
Пример инверсии зависимостей: генератор FizzBuzz
Делаем класс FizzBuzz открытым для расширения
Избавляемся от специфичности
Нарушение: высокоуровневый класс зависит от низкоуровнего
Рефакторинг: абстракции и конкретные реализации зависят от абстракций
Нарушение: привязка к поставщику
Решение: добавляем абстракцию и удаляем зависимость с помощью композиции
Пакеты и принцип инверсии зависимостей
Зависимость от стороннего кода: всегда ли это плохо?
Когда публиковать явный интерфейс класса
Если не все открытые методы предназначены для использования обычными клиентами
Если класс использует ввод/вывод
Если класс зависит от стороннего кода
Если вы хотите ввести абстракцию для множества конкретных вещей
Если вы предвидите, что пользователь захочет заменить часть иерархии объектов
Для всего остального: придерживайтесь финального класса
Заключение
ЧАСТЬ II. РАЗРАБОТКА ПАКЕТОВ
Глава 6. Принцип эквивалентности повторногот использования и выпуска
Держите свой пакет в системе управления версиями
Добавьте файл определений
Семантическое версионирование
Проектирование для обратной совместимости
Добавьте метафайлы
Контроль качества
Заключение
Глава 7. Принцип совместного повторного использования
Пласты функций
Классы, которые можно использовать, только когда установлен
Бонусные функции
Наводящие вопросы
Заключение
Глава 8. Принцип общей закрытости
Изменение в одной из зависимостей
Изменение на уровне приложения
Изменения, продиктованные бизнесом
Бизнес-логика
Треугольник принципов связности
Заключение
Глава 9. Принцип ацикличности зависимостей
Зацепление: выявление зависимостей
Различные способы зацепления пакетов
Визуализация зависимостей
Принцип ацикличности зависимостей
Проблемные циклы
Решения, позволяющие разорвать циклы
Сочетание Посредника и Цепочки обязанностей: система событий
Заключение
Глава 10. Принцип устойчивых зависимостей
Устойчивость
Не каждый пакет может быть высокостабильным
Нестабильные пакеты должны зависеть только от более стабильных
Оценка устойчивости
Снижение нестабильности и повышение устойчивости
Вопрос: следует ли учитывать все пакеты, какие есть во вселенной?
Нарушение: ваш стабильный пакет зависит от стороннего нестабильного пакета
Решение: используйте инверсию зависимостей
Пакет может быть как ответственным, так и наоборот
Заключение
Глава 11. Принцип устойчивых абстракций
Устойчивость и абстрактность
Как определить, является ли пакет абстрактным
А-метрика
Абстрактные вещи в стабильных пакетах
Абстрактность возрастает по мере роста устойчивости
Главная последовательность
Типы пакетов
Заключение
Глава 12. Заключение
Создание пакетов – это сложно
Создание пакетов – выполнимая задача
Создание пакетов – это легко?
Приложение A. Полный вариант класса Page
Предметный указатель

Все отзывы о книге Принципы разработки програмных пакетов : проектирование повторно используемых компонентов

Чтобы оставить отзыв, зарегистрируйтесь или войдите

Внимание!
При обнаружении неточностей или ошибок в описании книги "Принципы разработки програмных пакетов : проектирование повторно используемых компонентов (автор Маттиас Нобак)", просим Вас отправить сообщение на почту help@directmedia.ru. Благодарим!