Я написал книгу, предварительный релиз, о создании веб-приложений с нуля.
Я прочитал много книг по программированию, но, часто, после прочтения у меня оставался только один вопрос — Как мне применить эти знания на практике?
Предположим, вы разработчик системы автоматизации, портала или интернет-магазина.
Добавление новой функциональности осложняется наслоениями кода. Запуск тестов занимает полчаса, а релиз — час. Идея о переходе на новую версию фреймворка вызывает нервные подергивания. Вы узнаёте, что PostgreSQL имеет поддержку массивов, jsonb, полнотекстового поиска и lateral join, но ORM не позволяет использовать их в полную силу. Вы прочитали про TDD, но как писать в таком стиле, когда аналитик описывает сценарии, а фреймворк требует создания модели, контроллера и представления?
Как применить SOLID, если сущности наследуют от ORM?
Как избавиться от боли?
Постепенно, по мере изучения Clojure, и, наконец после прочтения Clean Architecture, я понял, как без боли написать приложение, где на первом месте стоит предметная область, а не фреймворк, где я принимаю решения, а не создатели фреймворков навязывают свои.
В какой-то степени книгу можно рассматривать как практический самоучитель по Clojure,
так что знание этого языка не требуется.
Книга, как минимум, научит читать Clojure код.
Мы разберем основополагающие моменты, а именно: полиморфизм и управление состоянием.
В качестве практики реализуем монаду Either.
Во второй главе я познакомлю с базовыми идеями дизайна:
- Объектно ориентированным проектированием
- Принципами SOLID
- Clean Architecture
- Domain Driven Design
- Dependency Injection
- Приемами для работы с БД
В последующих главах я опишу, как создать приложение на этих принципах.
Мы начнем с бизнес-логики, реализуем сценарии использования, отложим принятие технических решений с помощью абстракций.
Реализуем доставку приложения пользователю с помощью web-технологий.
Разберем работу с формами, валидацией.
Рассмотрим реализацию абстракции хранилища на основе паттернов Data Maper, Identity Map и Unit of Work.
Я старался делать акценты на действительно важных вещах, а не перепечатывать документацию.
При чтении придется искать и изучать дополнительный материал, для этого я даю ссылки.
Книга содержит практические упражнения. Доступен проект, на основе которого она написана.
Важно понимать, что это предварительный релиз.
Наверняка есть проблемы с изложением, и мне важно как можно раньше собрать обратную связь.
На текущий момент у книги отсутствует сайт, нет pdf и epub.
Присылайте свои комментарии на m.kuzmin+afs@darkleaf.ru