Томаш Лелек , Джон Скит - Software: Ошибки и компромиссы при разработке ПО
Название: | Software: Ошибки и компромиссы при разработке ПО | |
Автор: | Томаш Лелек , Джон Скит | |
Жанр: | Отладка, тестирование и оптимизация ПО | |
Изадано в серии: | Библиотека программиста | |
Издательство: | Питер | |
Год издания: | 2023 | |
ISBN: | 978-5-4461-2320-9 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Software: Ошибки и компромиссы при разработке ПО"
Создание программных продуктов всегда связано с компромиссами. В попытках сбалансировать скорость, безопасность, затраты, время доставки, функции и многие другие факторы можно обнаружить, что вполне разумное дизайнерское решение на практике оказывается сомнительным. Советы экспертов и яркие примеры, представленные в этой книге, научат вас делать правильный выбор в дизайне и проектировании приложений.
Мы будем рассматривать реальные сценарии, в которых были приняты неверные решения, а затем искать пути, позволяющие исправить подобную ситуацию. Томаш Лелек и Джон Скит делятся опытом, накопленным за десятки лет разработки ПО, в том числе рассказывают о собственных весьма поучительных ошибках. Вы по достоинству оцените конкретные советы и практические методы, а также неустаревающие паттерны, которые изменят ваш подход к проектированию.
16+
Читаем онлайн "Software: Ошибки и компромиссы при разработке ПО". [Страница - 2]
- 1
- 2
- 3
- 4
- . . .
- последняя (119) »
Глава 11. Семантика доставки в распределенных системах . . . . . . . . . . 347
Глава 12. Управление версиями и совместимостью . . . . . . . . . . . . . . . 374
Глава 13. Современные тенденции разработки и затраты .
на сопровождение кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Оглавление
https://t.me/it_boooks
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
О книге . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Для кого эта книга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Структура книги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
О коде . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Форум liveBook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Об авторах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Иллюстрация на обложке . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Словарь паттернов проектирования . . . . . . . . . . . . . . . . . . . . . . . . 28
Глава 1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.1. Последствия каждого решения и паттерна . . . . . . . . . . . . . . . . . 30
1.1.1. Решения в модульном тестировании . . . . . . . . . . . . . . . . . 31
1.1.2. Соотношение модульных и интеграционных тестов . . . . . . . . 32
1.2. Программные паттерны проектирования и почему .
они работают не всегда . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.2.1. Измерение скорости выполнения . . . . . . . . . . . . . . . . . . . 39
10 Оглавление
1.3. Архитектурные паттерны проектирования и почему .
они работают не всегда . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.3.1. Масштабируемость и эластичность . . . . . . . . . . . . . . . . . . 41
1.3.2. Скорость разработки . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.3.3. Сложность микросервисов . . . . . . . . . . . . . . . . . . . . . . . 43
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Глава 2. Дублирование кода не всегда плохо: дублирование кода .
и гибкость . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1. Общий код в кодовых базах и дублирование . . . . . . . . . . . . . . . . 47
2.1.1. Добавление нового бизнес-требования, для которого
дублирование кода необходимо . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1.2. Реализация нового бизнес-требования . . . . . . . . . . . . . . . . 50
2.1.3. Оценка результата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.2. Библиотеки и совместное использование кода в кодовых базах . . . . 52
2.2.1. Оценка компромиссов и недостатков .
совместно используемых библиотек . . . . . . . . . . . . . . . . . . . . . 53
2.2.2. Создание совместно используемой библиотеки . . . . . . . . . . 54
2.3. Выделение кода в отдельный микросервис . . . . . . . . . . . . . . . . . 55
2.3.1. Компромиссы и недостатки отдельного сервиса . . . . . . . . . . 58
2.3.2. Выводы о выделении отдельных сервисов . . . . . . . . . . . . . . 62
2.4. Улучшение слабой связанности за счет дублирования кода . . . . . . . 63
2.5. Проектирование API с наследованием для сокращения .
дублирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.5.1. Выделение базового обработчика запросов . . . . . . . . . . . . . 68
2.5.2. Наследование и сильная связанность . . . . . . . . . . . . . . . . . 70
2.5.3. Компромиссы между наследованием и композицией . . . . . . . 72
2.5.4. Дублирование внутреннее и ситуативное . . . . . . . . . . . . . . 73
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Глава 3. Исключения и другие паттерны обработки ошибок в коде . . . . . . 75
3.1. Иерархия исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.1.1. Универсальный и детализированный подход к обработке
ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Оглавление 11
3.2. Лучшие паттерны для обработки исключений в собственном коде . . 81
3.2.1. Обработка проверяемых исключений .
в общедоступном API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.2.2. Обработка непроверяемых исключений .
в общедоступном API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.3. Антипаттерны в обработке исключений . . . . . . . . --">
- 1
- 2
- 3
- 4
- . . .
- последняя (119) »
Другие книги из серии «Библиотека программиста»:
Скотт Мейерс - Эффективное использование STL Жанр: C, C++, C# Год издания: 2002 Серия: Библиотека программиста |
Эрик Мэтиз - Изучаем Python. Программирование игр, визуализация данных, веб-приложения Жанр: Программирование игр Серия: Библиотека программиста |
Роберт Сесил Мартин - Чистый код. Создание, анализ и рефакторинг Жанр: Программирование: прочее Год издания: 2010 Серия: Библиотека программиста |
Роберт Сесил Мартин - Чистая архитектура Жанр: Современные российские издания Год издания: 2018 Серия: Библиотека программиста |