Система Orphus

Шаблоны реализации корпоративных приложений

Автор: Кент Бек
Издательство: "Вильямс", 2008
176 страниц
ISBN: 978-5-8459-1406-4
ISBN: 0-321-41309-1

Материал предоставил: Сергей Тепляков
Найти в магазинах

Аннотация

Содержание
Комментарии

Аннотация

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

Эта книга предназначена для программистов всех уровней подготовки, особенно для тех, кто применяет в своей практике шаблоны проектирования и методы быстрой разработки. Книга также окажется неоценимым ресурсом для команд разработчиков, ищущих более эффективные методы совместной работы и построения более управляемого ПО.

Содержание

Отзывы о книге
Предисловие
Благодарности
От издательства

Глава 1. Вступление

Краткое содержание
Итак...

Глава 2. Шаблоны

Глава 3. Теория программирования

Ценности
Взаимодействие
Простота
Гибкость
Принципы
Локализация последствий
Минимизация повторений
Объединение логики и данных
Симметрия
Описательные выражения
Частота изменений
Выводы

Глава 4. Мотивация

Глава 5. Класс

Класс
Простое имя суперкласса
Абстрактный интерфейс
Интерфейс
Абстрактный класс
Интерфейс версий
Объект-значение
Специализация
Субкласс
Имплементор
Вложенный класс
Контекстно-зависимое поведение
Условия
Делегирование
Сменный селектор
Анонимный вложенный класс
Библиотечный класс
Выводы

Глава 6. Состояние

Состояние
Доступ
Прямой доступ
Косвенный доступ
Общее состояние
Переменное состояние
Внешнее состояние
Переменная
Локальная переменная
Поле
Параметры
Собирающий параметр
Опциональный параметр
Аргументы-переменные
Объект-параметр
Константа
Имя, указывающее на роль
Определение типа
Инициализация
Ранняя инициализация
Отложенная инициализация
Выводы

Глава 7. Поведение

Управляющая логика
Главный алгоритм
Сообщение
Выбор сообщения
Двойная доставка
Декомпозиционное сообщение
Обратное сообщение
Приглашающее сообщение
Поясняющее сообщение
Алгоритм исключений
Сторожевой пункт
Исключения
Проверяемые исключения
Распространение исключений
Выводы

Глава 8. Методы

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

Глава 9. Коллекции

Метафоры
Сущности
Интерфейсы
Array
Iterable
Collection
List
Set
SortedSet
Map
Реализация
Collection
List
Set
Map
Collections
Поиск
Сортировка
Немодифицируемые коллекции
Коллекции из одного элемента
Пустые коллекции
Расширение коллекций
Выводы

Глава 10. Развитие инфраструктур

Изменение инфраструктур без изменения приложений
Несовместимые обновления
Осуществление совместимого изменения
Библиотечный класс
Объекты
Стиль использования
Абстракция
Создание экземпляров
Методы
Выводы

Приложение А. Замеры производительности

Пример
API
Реализация
MethodTimer
Исключая накладные расходы
Тесты
Сравнение коллекций
Сравнение ArrayList и LinkedList
Сравнение множества Set
Сравнение коллекций Maps
Выводы

Библиография

Общее программирование
Философия
Java

Предметный указатель

Комментарии

Сергей Тепляков

Разработка программного обеспечения является сложной и многогранной задачей. И хотя многие задачи, с которыми мы сталкиваемся в процессе работы, являются уникальными, многие решаются сходным образом. "Программирование станет более эффективным, если программисты будут тратить меньше времени на рутинные, повторяющиеся части своей работы, чтобы иметь возможность более продуктивно решать действительно уникальные проблемы".

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

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

В целом, достаточно интересно и занимательно, если бы не ряд "но".

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

Во-вторых, это перевод. Книга называется "Шаблоны реализации корпоративных приложений", причем "корпоративные приложения" придуманы отечественными локализаторами и в названии оригинала не фигурируют. Если следовать принципам, на основе которых переведена эта книга, то она должна называться так: "Паттерны имплементации интерпрайзных аппликаций". В книге в огромном количестве встречаются "имплементации", "репрезентации", "вариации", "декларации" и множество других неверно переведенных терминов. При чтении мне вспомнился перевод инструкции к усилителю Pioneer: "Усилитель предназначен для подключения дигитальных компонентов с трехдиминзионным звуком". Помимо ужасного перевода терминологии, многие предложения построены так, что понять замысел автора практически невозможно. К этому нужно добавить Smalltalk прошлое Кента Бека и его непривычную терминологию, которая добавляет сложность к восприятию материала.

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