Fork me on GitHub
#clojure-russia
<
2015-10-22
>
artofshine03:10:18

Всем привет. Начал пробовать Clojure, прошелся по базовым концепциям и конструкциям. Стал пробовать и понял, что мне было бы очень полезно, если бы кто-то покритиковал код. Ссылку прикладываю, жду комментов... https://gist.github.com/ossbase/b593400fee121f57ea05

dima05:10:22

у меня незначительные комментарии, но все же: • согласен с комментарием в gist, для диспатчинга по type, вместо использования cond, можно использовать defmulti • не совсем понятен интерфейс - какие из методов публичные какие приватные? • небольшие вопросы по форматированию кода, в частности индентация в коде (if ..). Мне кажется более читабельно делать индентацию каждого бранча по открывающей скобке слева. Здесь тоже нестандартная индентация кода https://gist.github.com/ossbase/b593400fee121f57ea05#file-member-clj-L44 • для чего оставлять пустые docstring у функций https://gist.github.com/ossbase/b593400fee121f57ea05#file-member-clj-L27

dima05:10:12

а еще здесь есть канал #C053PTJE6

dottedmag05:10:52

Интересно, если отправлять туда коммиты роботом, то побьют ведь, да? :)

prepor06:10:43

@trybeee: @artofshine все нормально там с индентами. Там bensu все ок написал. Ну и главное да, забудь про макросы пока, вырази что хочешь без них

dima07:10:53

@prepor: вопрос вкуса вероятно, но первый вариант мне кажется более читабельным https://gist.github.com/trybeee/85cfdc350873d42ac402

prepor07:10:33

кажется, не кажется, а главное в этом деле что бы было одинаково ) кложавские (да и целом лисповые гайды говорят о втором варианте). в целом правило простое — как cider отформатировал (cursive повторяет поведение cider) так и правильно ) но внутри команды могут быть какие-то другие договоренности, конечно

dima07:10:23

ну тогда наверное есть смысл это брать за основу https://github.com/bbatsov/clojure-style-guide

ul08:10:27

lein cljfmt fix перед коммитом и забыть вообще думать о форматировании

niquola10:10:01

@prepor а ты делад шаблоный проект для ваших сервисов - было бы интересно полазать по нему

prepor10:10:28

@nicola: не делал, но в целом надо бы )

niquola10:10:15

надо конструктор шаблонов сделать

dottedmag11:10:34

а потом шаблон для конструктора шаблонов.

abtv18:10:47

@asolovyov: Выложили твой доклад, как всегда очень живо и интересно. Я вот сколько проектов на clj/cljs вижу - везде своя архитектура и либы. Это хорошо, что есть выбор, я думал в основном на Om все пишут. Может как-нибудь на митап придешь и расскажешь в деталях для кложурианцев? simple_smile

asolovyov19:10:14

@abtv: ну, слушай, om/rum - разница не супер-большая. На мой взгляд, на om пишут в основном те, кто только начинают с этим возиться, потому что Нолен всë-таки самая заметная величина в мире кложуры, но он прямо сложный внутри, и код выходит не очень приятный, поэтому я rum юзаю. Но разница... ну это почти фигня, они обëртки вокруг реакта, в rum повторить om несложно, етц. С архитектурой... ну так в жс точно так же, каждый сам себе строит, все эти рефлюксы/редьюксы, все дела. А на "митап придëшь" это вот эти штуки по понедельникам? Если да, то я б отложил до запуска этой штуки уже, чтоб я мог может цифрами или хоть ощущениями поделиться.

niquola20:10:00

@asolovyov: а давай действительно тебе посвятим следующий hangout?

niquola20:10:25

Как раз будет до и потом еще раз после

asolovyov20:10:45

следующий это 26 числа?

niquola20:10:55

Сможешь сравнить что думал - и что получилось документально

niquola20:10:05

Например да - но можем и под тебя подстроиться

asolovyov20:10:08

я не уверен, что я готов, у меня на работе сча несколько напряг и я дома чуточку подбитый обычно )

asolovyov20:10:34

ну в общем давай не так, я всë равно хочу всю эту бодягу скоро уже запускать, а то не будет времени

asolovyov20:10:42

так что как только у меня она поедет в продакшене - тогда и устроим

asolovyov20:10:50

я расслаблю булки немного заодно simple_smile

niquola20:10:11

ок, комитмент дал - я запишу в блокнотек

asolovyov20:10:15

ок, кул simple_smile

abtv20:10:07

классно, ждем simple_smile

niquola20:10:28

Тогда давайте следующую встречу посвятим средам разработки - в этот понедельник у меня инет вырубили 😞

abtv20:10:08

Давайте, а я, как ни странно, попробовал spacemacs и вернулся на Idea, пока не осилил. У меня как-то странно получилось с emacs - вроде маленько настроил под себя, ну минимально юзабельно (cider, paredit, ergoemacs, autocomplete, neotree), но вот взял spacemacs и там уже все совсем по-другому. чтобы настроить под себя уже нужно понимать, что там и как, это не голый emacs. Может расскажете как настроить это дело? Хочется понимать как это все работает и сама идея настройки редактора под себя очень классная, но вот сразу брать готовое как-то и сложно и не очень хочется. В первую очередь интересуют самые нужные packages и как это все настроить. Например, как организовать удобный поиск по всем файлам проекта? Найти, скажем, функцию по имени.

abtv20:10:36

@nicola: покажешь типичный workflow на митапе? И есть ли возможность как-то подсвечивать байндинги при этом?

niquola20:10:55

Покажу - кейбиндинги голосом ;)

abtv20:10:13

а как, кстати, сделать find all usages of ? и задать какой-нибудь :keyword

abtv20:10:30

и все это по проекту целиком

prepor21:10:02

мне в 99 процентах случаев ничего кроме “найти строку” не надо )

prepor21:10:50

clj-refactor умеет находить использования с большим пониманием происходящего по-идее https://github.com/clojure-emacs/clj-refactor.el/wiki/cljr-find-usages

kronos_vano21:10:44

что хорошего добавить в dotspacemacs-configuration-layers кроме clojure ? Также не получилось заставить spacemacs сохранять desktop

kronos_vano21:10:59

(desktop-save-mode 1) не завелся

abtv21:10:10

а как бы сделать так, чтобы держать список названий буферов перед глазами? по-моему в этом смысле табы очень удобны. или просто надо привыкнуть к list-buffers (c-x c-b)?

niquola21:10:37

(-> s                                                                                                                                 
  (.replace #"^\?" "")                                                                                                                
  (clojure.string/split #"&")                                                                                                         
  (->>                                                                                                                                
    (map #(clojure.string/split % #"="))                                                                                              
    (map (fn [[k v]] [(keyword k) (js/decodeURIComponent v)]))                                                                        
    (into {})))

niquola21:10:04

обнаружил что стрелочные макросы можно вкладывать друг в друга

niquola21:10:33

Просто ненавижу let

niquola21:10:16

let это code-smell для clojure программиста simple_smile