Чистая архитектура, Искусство разработки программного обеспечения, Мартин Р., 2018.
«Идеальный программист» и «Чистый код» — легендарные бестселлеры Роберта Мартина — рассказывают, как достичь высот профессионализма. «Чистая архитектура» продолжает эту тему, но не предлагает несколько вариантов в стиле «решай сам», а объясняет, что именно следует делать, по какой причине и почему именно такое решение станет принципиально важным для вашего успеха.
Роберт Мартин дает прямые и лаконичные ответы на ключевые вопросы архитектуры и дизайна. «Чистую архитектуру» обязаны прочитать разработчики всех уровней, системные аналитики, архитекторы и каждый программист, который желает подняться по карьерной лестнице или хотя бы повлиять на людей, которые занимаются данной работой.
Что такое дизайн и архитектура?
За долгие годы вокруг понятий «дизайн» и «архитектура» накопилось много путаницы. Что такое дизайн? Что такое архитектура? Чем они различаются?
Одна из целей этой книги — устранить весь этот беспорядок и определить раз и навсегда, что такое дизайн и архитектура. Прежде всего, я утверждаю, что между этими понятиями нет никакой разницы. Вообще никакой.
Слово «архитектура» часто используется в контексте общих рассуждений, когда не затрагиваются низкоуровневые детали, а слово «дизайн» обычно подразумевает организацию и решения на более низком уровне. Но такое разделение бессмысленно, когда речь идет о том, что делает настоящий архитектор.
Возьмем для примера архитектора, спроектировавшего мой новый дом. Этот дом имеет архитектуру? Конечно! А в чем она выражается? Ну... это форма дома, внешний вид, уступы, а также расположение комнат и организация пространства внутри. Но когда я рассматривал чертежи, созданные архитектором, я увидел на них массу деталей. Я увидел расположение всех розеток, выключателей и светильников. Я увидел, какие выключатели будут управлять теми или иными светильниками. Я увидел, где будет находиться узел отопления, а также местоположение и размеры водонагревательного котла и насоса. Я увидел подробное описание, как должны конструироваться стены, крыша и фундамент.
Оглавление.
Предисловие.
От издательства.
Вступление.
Благодарности.
Об авторе.
Часть I. Введение.
Глава 1. Что такое дизайн и архитектура?.
Цель?.
Пример из практики.
Заключение.
Глава 2. История о двух ценностях.
Поведение.
Архитектура.
Наибольшая ценность.
Матрица Эйзенхауэра.
Битва за архитектуру.
Часть II. Начальные основы: парадигмы программирования.
Глава 3. Обзор парадигм.
Структурное программирование.
Объектно-ориентированное программирование.
Функциональное программирование.
Пища для ума.
Заключение.
Глава 4. Структурное программирование.
Доказательство.
Объявление вредным.
Функциональная декомпозиция.
Формальные доказательства отсутствуют.
Наука во спасение.
Тестирование.
Заключение.
Глава 5. Объектно-ориентированное программирование.
Инкапсуляция?.
Наследование?.
Полиморфизм?.
Заключение.
Глава 6. Функциональное программирование.
Квадраты целых чисел.
Неизменяемость и архитектура.
Ограничение изменяемости.
Регистрация событий.
Заключение.
Часть III. Принципы дизайна.
Глава 7. Принцип единственной ответственности.
Признак 1: непреднамеренное дублирование.
Признак 2: слияния.
Решения.
Заключение.
Глава 8. Принцип открытости/закрытости.
Мысленный эксперимент.
Управление направлением.
Сокрытие информации.
Заключение.
Глава 9. Принцип подстановки Барбары Дисков.
Руководство по использованию наследования.
Проблема квадрат/прямоугольник.
LSP и архитектура.
Пример нарушения LSP.
Заключение.
Глава 10. Принцип разделения интерфейсов.
Принцип разделения интерфейсов и язык.
Принцип разделения интерфейсов и архитектура.
Заключение.
Глава 11. Принцип инверсии зависимости.
Стабильные абстракции.
Фабрики.
Конкретные компоненты.
Заключение.
Часть IV. Принципы организации компонентов.
Глава 12. Компоненты.
Краткая история компонентов.
Перемещаемость.
Компоновщики.
Заключение.
Глава 13. Связность компонентов.
Принцип эквивалентности повторного использования и выпусков.
Принцип согласованного изменения.
Принцип совместного повторного использования.
Диаграмма противоречий для определения связности компонентов.
Заключение.
Глава 14. Сочетаемость компонентов.
Принцип ацикличности зависимостей.
Проектирование сверху вниз.
Принцип устойчивых зависимостей.
Принцип устойчивости абстракций.
Заключение.
Часть V. Архитектура.
Глава 15. Что такое архитектура.
Разработка.
Развертывание.
Эффективность работы.
Сопровождение.
Сохранение разнообразия вариантов.
Независимость от устройства.
Нежелательная почта.
Физическая адресация.
Заключение.
Глава 16. Независимость.
Варианты использования.
Эффективность работы.
Разработка.
Развертывание.
Сохранение разнообразия вариантов.
Разделение уровней.
Разделение вариантов использования.
Режим разделения.
Возможность независимой разработки.
Возможность независимого развертывания.
Дублирование.
Режимы разделения (еще раз).
Заключение.
Глава 17. Границы: проведение разделяющих линий.
Пара печальных историй.
FitNesse.
Какие границы проводить и когда?.
О вводе и выводе.
Архитектура с плагинами.
Аргумент в пользу плагинов.
Заключение.
Глава 18. Анатомия границ.
Пересечение границ.
Ужасный монолит.
Компоненты развертывания.
Потоки выполнения.
Локальные процессы.
Службы.
Заключение.
Глава 19. Политика и уровень.
Уровень.
Заключение.
Глава 20. Бизнес-правила.
Сущности.
Варианты использования.
Модели запросов и ответов.
Заключение.
Глава 21. Кричащая архитектура.
Тема архитектуры.
Цель архитектуры.
А что насчет Веб?.
Фреймворки — это инструменты, а не образ жизни.
Тестируемые архитектуры.
Заключение.
Глава 22. Чистая архитектура.
Правило зависимостей.
Типичный сценарий.
Заключение.
Глава 23. Презентаторы и скромные объекты.
Шаблон «Скромный объект».
Презентаторы и представления.
Тестирование и архитектура.
Шлюзы к базам данных.
Преобразователи данных.
Службы.
Заключение.
Глава 24. Неполные границы.
Пропустить последний шаг.
Одномерные границы.
Фасады.
Заключение.
Глава 25. Уровни и границы.
Охота на Вампуса.
Чистая архитектура?.
Пересечение потоков.
Разбиение потоков.
Заключение.
Глава 26. Главный компонент.
Конечная деталь.
Заключение.
Глава 27. Службы: большие и малые.
Сервисная архитектура?.
Преимущества служб?.
Проблема с животными.
Спасение в объектах.
Службы на основе компонентов.
Сквозные задачи.
Заключение.
Глава 28. Границы тестов.
Тесты как компоненты системы.
Проектирование для простоты тестирования.
Программный интерфейс для тестирования.
Безопасность.
Заключение.
Глава 29. Чистая встраиваемая архитектура.
Тест на профпригодность.
Привязка к оборудованию — узкое место.
Заключение.
Часть VI. Детали.
Глава 30. База данных — это деталь.
Реляционные базы данных.
Почему системы баз данных настолько распространены?.
Сохранятся ли диски?.
Детали.
А производительность?.
История.
Заключение.
Глава 31. Веб — это деталь.
Бесконечный маятник.
Вывод.
Заключение.
Глава 32. Фреймворки — это деталь.
Авторы фреймворков.
Неравный брак.
Риски.
Решение.
Объявляю вас.
Заключение.
Глава 33. Практический пример: продажа видео.
Продукт.
Анализ вариантов использования.
Компонентная архитектура.
Управление зависимостями.
Заключение.
Глава 34. Недостающая глава.
Упаковка но уровням.
Упаковка но особенностям.
Порты и адаптеры.
Упаковка по компонентам.
Дьявол в деталях реализации.
Организация и инкапсуляция.
Другие режимы разделения.
Заключение: недостающий совет.
Часть VII. Приложение.
Архитектурная археология.
Профсоюзная система учета.
Laser Trim.
Контроль алюминиевого литья под давлением.
4-TEL.
Компьютер зоны обслуживания.
Язык С.
BOSS.
pCCU.
DLU/DRU.
VRS.
Электронный секретарь.
Система командирования ремонтников.
ROSE.
Регистрационные экзамены для архитекторов.
Заключение.
Купить .
Теги: учебник по программированию :: программирование :: Мартин
Смотрите также учебники, книги и учебные материалы:
- Основы алгоритмизации и программирования в средней школе, Батан Л.В., 2012
- Программирование для детей на языке Scratch, Банкрашкова А., 2017
- Глубокое обучение на Python, Шолле Ф., 2018
- Qt 5.10, Профессиональное программирование на C++, Шлее М., 2018
- Хакинг, Искусство эксплойта, Эриксон Д., 2018
- Head First, Паттерны проектирования, Обновленное юбилейное издание, Фримен Э., Робсон Э., Сьерра К., Бейтс Б., 2018
- Теоретический минимум по Computer Science, Все, что нужно программисту и разработчику, Феррейра Ф.В., 2018
- Теоретический минимум по Big Data, Все, что нужно знать о больших данных, Ын А., Су К., 2019