This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-09-06
Channels
- # beginners (147)
- # boot (12)
- # chestnut (12)
- # cider (22)
- # clara (10)
- # cljs-dev (6)
- # cljs-experience (3)
- # cljsrn (12)
- # clojure (58)
- # clojure-austin (3)
- # clojure-dusseldorf (25)
- # clojure-finland (20)
- # clojure-gamedev (1)
- # clojure-greece (3)
- # clojure-italy (32)
- # clojure-new-zealand (5)
- # clojure-russia (12)
- # clojure-serbia (1)
- # clojure-spec (4)
- # clojure-uk (51)
- # clojurescript (75)
- # cursive (8)
- # datomic (81)
- # fulcro (29)
- # graphql (16)
- # heroku (6)
- # incanter (1)
- # keechma (1)
- # lumo (44)
- # off-topic (21)
- # onyx (22)
- # parinfer (5)
- # portkey (40)
- # re-frame (43)
- # reagent (5)
- # spacemacs (37)
- # specter (8)
- # unrepl (3)
Тоже об этом думал (вынос кейвордов), но что-то делать ничего не стал. И так вроде бы нормально, Cursive выдает подсказки по уже использованным кейвордам - выбираешь и всё. А если надо что-то порефакторить, SearchMonkey запущен, чтобы по всему проекту искать. А если киворды выносить, то есть подозрения что можно cyclic dependencies получить, плюс когда def используется, не сразу понятно, что там, киворд или какое-то нормальное значение, функция, или еще что, интуитивность пропадает.
Ну и вообще, JSON-driven development http://okigiveup.net/arguments-against-json-driven-development/, хоп-хоп и готово, все дела, а если киворды выносить, то так можно и до классов дойти
@leov я как раз думаю, как делать проекты не в 5 файлов и не 2 дня если эксперимент будет успешным - поделюсь результатами по поводу императивно или нет - это не важно на самом деле, важно подобрать модель, адекватную бизнес задаче пока сделал вот так: https://github.com/darkleaf/publicator/blob/master/src/publicator/interactors/user/log_in.clj#L38-L47 может быть, когда-нибудь я пойму как тут использовать чистый either отдельно either, отдельно бизнес задачу я понимаю, а вот как ее через either смоделировать - нет тривиальные случаи не рассматриваем)
@leov несколько мыслей накину: 0) сначала нужен дизайн системы в виде документа или рисунка. То есть разбивка на модули, входные и выходные данные каждого модуля. 1) На вход разработки по-любому поступает что-то от аналитиков, которые хотя бы в табличке описали модель предметной области данных. Разработка предметной модели данных в Clojure собственно представление этих данных в виде мап с неймспейсами или Record'ов. 2) тесты никто не отменял в clojure. Делаем REPL-driven development при разработке кода. После того как убедились в REPL' е что все работает, по shortcut создается пространство в папке test, куда с небольшими изменениями переносится код, вызыванный в REPL'е в виде unit-тестов. 3) Спека очень подходит для межмодульного тестирования. Соответственно, она поможет предотвратить опечатки и выкинет exception при первом запуске неверных данных. 4) Опечатки как правило видны сразу при REPL-драйвен. А если сосед опечатался, то unit-тесты на то и нужны, чтобы он локально убедился что код соседей не сломал.