Оглавление Функціональний дизайн. Принципи, патерни і практики
Присвята
Вступне слово
Передмова
Подяки
Про автора
Частина І. ФУНКЦІОНАЛЬНІ ОСНОВИ
1. НЕЗМІННІСТЬ
Що таке функціональне програмування?
Проблема із присвоюванням
То чому ж воно називається функціональним?
Без зміни стану?
Незмінність
2. ПОСТІЙНІ ДАНІ
Про шахрайство
Виготовлення копій
Структурний розподіл
3. РЕКУРСІЯ ТА ІТЕРАЦІЯ
Ітерація
Дуже короткий підручник із Clojure
Ітерація
ТСО. Clojure та JVM
Рекурсія
4. ЛІНЬ
Ліниве накопичення
Гаразд, але чому?
Кода
5. СТАБІЛЬНИЙ СТАН
Коли ми мусимо мутувати
Програмна транзакційна пам'ять ISTM)
Життя складне, програмне забезпечення іще складніше
Частина II. ПОРІВНЯЛЬНИЙ АНАЛІЗ
6. «PRIME FACTORS»
Версія Java
Версія на Clojure
Висновок
7. «ГРА У БОУЛІНГ»
Версія Java
Версія на Clojure
Висновок
8. «ПЛІТКИ ВОДІЇВ АВТОБУСІВ»
Рішення на Java
Driver
Route
Stop
Rumor
Simulation
Clojure
Висновок
9. ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ
Функціональна реалізація Payroll (Розрахунок заробітної
платні)
Простори імен та вихідні файли
Висновок
10. ТИПИ
Висновок
Частина III. ФУНКЦІОНАЛЬНИЙ ДИЗАЙН
11. ПОТІК ДАНИХ
12. SOLID
Принцип єдиної відповідальності (SRP)
Принцип відкритості-закритості (ОСР)
Функції
Об'єкти з Vtables
Мультиметоди
Незалежне розгортання
Принцип заміщення Лісков (LSP)
Правило ISA
Ні!
Правило представлення
Принцип розділення інтерфейсів (ISP)
Не залежте від речей, що вам не потрібні
Чому?
Висновок
Принцип інверсії залежностей (DIP)
Вибух із минулого
Порушення DIP
Висновок
Частина IV. ФУНКЦІОНАЛЬНА ПРАГМАТИКА
13. ТЕСТИ
А як щодо REPL?
А що з моками?
Тестування на основі властивостей
Метод діагностики
Функціональний підхід
16. ГРАФІЧНИЙ ІНТЕРФЕЙС
Turtle-Graphics у Quil
15. КОНКУРЕНТНІСТЬ
Висновок
Частина V. ДИЗАЙН-ПАТЕРНИ
16. ОГЛЯД ДИЗАЙН-ПАТЕРНІВ
Патерни у функціональному програмуванні
Абстрактний сервер
Адаптер
Чи справді це об'єкт адаптера?
Command
Відміна
Composite
Функціональний?
Декоратор
Візитер
Close чи Clojure?
Проблема повороту на 90 градусів
Абстрактна фабрика
Знову поворот на 90 градусів
Безпека типів?
Висновок
Постскриптум: отруєне ОП?
Частина VI. ПРИКЛАД ІЗ ЖИТТЯ
17. WA-TOR
Позбавляємося сверблячки
Душ вирішує проблеми
Час дикого розмноження
А як щодо shark?
Висновок
Післямова від Джини Мартіні
Покажчик