Книга «App from scratch»

Совершенный кодПроектирование и рефакторингООПФункциональное программированиеClojure

Я написал книгу, предварительный релиз, о создании веб-приложений с нуля.


Я прочитал много книг по программированию, но, часто, после прочтения у меня оставался только один вопрос — Как мне применить эти знания на практике?


Предположим, вы разработчик системы автоматизации, портала или интернет-магазина.
Добавление новой функциональности осложняется наслоениями кода. Запуск тестов занимает полчаса, а релиз — час. Идея о переходе на новую версию фреймворка вызывает нервные подергивания. Вы узнаёте, что 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

Теги:app-from-scratchclojureclean architecturedddsoliddidata mapperidentity mapunit of work
Хабы: Совершенный код Проектирование и рефакторинг ООП Функциональное программирование Clojure
+9
3,7k 35
Комментарии 14

Похожие публикации

Лучшие публикации за сутки