1) emacs + sider или idea + cursive, я пользуюсь первым. Кто-то пишет в ms vs code, там есть какие-то плагины.
2) На любителя, кто-то просто git использует в терминале. Для emacs есть magit.
3) Автокомлит в редакторе делается плагинами, тем же cider. Есть clj-refactor, но он не работает с новым cider =(
4) Навигация зависит от редактора. Для emacs есть projectile.
5) Есть java interop, т.е. из repl можно дергать java код.
6) Например, запаковать в докер.
7) да, есть бенчмарки, которые умеют прогревать JVM. В книге есть пример.
8) вот пример теста
Круто, что хоть кто-то открыл эту книжку =)
Еще советую посмотреть видео. Их можно найти.
SRP
DBA тут при том, что есть шлюз к базе, и актором, запрашивающим изменения будет DBA.
То, что вы привели — действительно цитата из книжки, я же привел свою трактовку.
OCP
Определение из статьи — цитата из книжки. Трактовка взята из соответствующего видео с cleancoders.com. Артефакт — это файл, содержащий класс в текстовой форме, dll, и т.п.
LSP
В основном, эта часть опять взята с cleancoders.com
Можно провести такую аналогию. Заказчик говорит: Нужно отправить письмо, если (тут набор бизнес требований). Т.е. он не говорит, я хочу отправить письмо через Mailchimp. Он закрывается абстракцией и откладывает решение о реализации.
Про проводу протекания абстракций. Текут абстракции, вроде TCP, которые обязуются обеспечить надежность поверх ненадежных технологий. Если выдернуть провод, TCP естественно не доставит пакет.
Все зависит от архитектора и его компетенций. Само-собой можно такого напроектировать.
Просмотри первоисточники, там подробно разобраны твои вопросы.
Чтобы вставить заглушку — нужно объявить интерфейс(абстракцию).
Давай пример попроще.
Допустим, нужно отправлять уведомления.
Мы объявляем интерфейс вроде IMailSender с одним методом void Send(address, title, content).
Далее описываем бизнес-логку. В тесах используем mock/stub/fake object с интерфейсом IMailSender.
Нам важно примерно знать что будет, а не точно.
Найди книжку Clean Architecture, там все доступно объясняется.
История следующая. Обычно все говорят, зачем тебе абстракции, если ты и так знаешь что будешь использовать условный Postgres. У тебя вопрос — полная противоположность.
Для начала работы как раз нужно использовать заглушку, но понимать, что примерно будет использоваться потом. И спроектировать адекватные абстракции.
Если ты ожидаешь, что будет использоваться реляционная база, а потом окажется, что можно использовать только key-value, то абстракции нужно будет менять и переписывать проект.
https://app-from-scratch.darkleaf.ru
спасибо за совет
https://app-from-scratch.darkleaf.ru
Да, есть планы на сайт, pdf, epub и т.п. Спасибо.
1) emacs + sider или idea + cursive, я пользуюсь первым. Кто-то пишет в ms vs code, там есть какие-то плагины.
2) На любителя, кто-то просто git использует в терминале. Для emacs есть magit.
3) Автокомлит в редакторе делается плагинами, тем же cider. Есть clj-refactor, но он не работает с новым cider =(
4) Навигация зависит от редактора. Для emacs есть projectile.
5) Есть java interop, т.е. из repl можно дергать java код.
6) Например, запаковать в докер.
7) да, есть бенчмарки, которые умеют прогревать JVM. В книге есть пример.
8) вот пример теста
Можно помотреть мой emacs.d.
У меня нет цели писать стандартный гайд, иначе я бы никогда не закончил книгу.
Для этого есть глава о материалах для самостоятельно чтения.
Если просто написать web приложение, вот чтобы сразу ехать, то можно посмотреть в сторону luminus. Но как спроектировать архитектуру там не расскажут.
спасибо, поправил
В книге есть параграф про окружение.
Например, там описан отдельный repl, не встраиваемый в редактор, и плагин для расстановки скобок и выравнивания кода.
По поводу emacs — без нормальной клавиатуры, вроде kinesis, с ним очень сложно.
Надеюсь, это поможет.
Посмотрите на эту библиотеку: https://github.com/timkendrick/memoize-bind
Виноват тот, кто реализовал DoubleStack.
Несколько странный вывод =)
Хорошо бы пользоваться соответствующими интерфейсами, а для их выбора поможет ISP.
Именно!
Круто, что хоть кто-то открыл эту книжку =)
Еще советую посмотреть видео. Их можно найти.
SRP
DBA тут при том, что есть шлюз к базе, и актором, запрашивающим изменения будет DBA.
То, что вы привели — действительно цитата из книжки, я же привел свою трактовку.
OCP
Определение из статьи — цитата из книжки. Трактовка взята из соответствующего видео с cleancoders.com. Артефакт — это файл, содержащий класс в текстовой форме, dll, и т.п.
LSP
В основном, эта часть опять взята с cleancoders.com
Тут речь про то, что модели не обязаны реализовывать отношения объектов реального мира.
Т.е. в реальном мире список окружностей является подтипом списка фигур, но в программной модели с изменяемыми списками это не так.
В том то и дело, что формулировки принципов выглядят довольно странно.
И осенью вышла книга CleanArchitecture, которая исправляет эти недостатки.
Цель статьи привлечь внимание и посоветовать ознакомиться с первоисточниками.
Вы читали первоисточники, которые указаны в статье?
конечно, программа подстраивается под отношения людей, а не наоборот
это определение из Википедии: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%BF%D0%BE%D0%B4%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8_%D0%91%D0%B0%D1%80%D0%B1%D0%B0%D1%80%D1%8B_%D0%9B%D0%B8%D1%81%D0%BA%D0%BE%D0%B2
Про случай СУБД, советую посмотреть https://github.com/darkleaf/building-application
посмотри еще вот это: https://github.com/darkleaf/building-application
там пример на clojure, но все доступно объясняется
Можно провести такую аналогию. Заказчик говорит: Нужно отправить письмо, если (тут набор бизнес требований). Т.е. он не говорит, я хочу отправить письмо через Mailchimp. Он закрывается абстракцией и откладывает решение о реализации.
Про проводу протекания абстракций. Текут абстракции, вроде TCP, которые обязуются обеспечить надежность поверх ненадежных технологий. Если выдернуть провод, TCP естественно не доставит пакет.
Все зависит от архитектора и его компетенций. Само-собой можно такого напроектировать.
Просмотри первоисточники, там подробно разобраны твои вопросы.
Чтобы вставить заглушку — нужно объявить интерфейс(абстракцию).
Давай пример попроще.
Допустим, нужно отправлять уведомления.
Мы объявляем интерфейс вроде
IMailSender
с одним методом voidSend(address, title, content)
.Далее описываем бизнес-логку. В тесах используем mock/stub/fake object с интерфейсом IMailSender.
Нам важно примерно знать что будет, а не точно.
Найди книжку Clean Architecture, там все доступно объясняется.
История следующая. Обычно все говорят, зачем тебе абстракции, если ты и так знаешь что будешь использовать условный Postgres. У тебя вопрос — полная противоположность.
Для начала работы как раз нужно использовать заглушку, но понимать, что примерно будет использоваться потом. И спроектировать адекватные абстракции.
Если ты ожидаешь, что будет использоваться реляционная база, а потом окажется, что можно использовать только key-value, то абстракции нужно будет менять и переписывать проект.