Size: a a a

Clojure — русскоговорящее сообщество

2020 January 09

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
Сергей Суржик
выглядит конечно красиво
Как мне кажется, что выглядит не очень красиво, но зато очень лениво. Слишком часто бывает лень открыть тесты и покрыть новую функцию там. deftest, testing блаблабла. А тут просто раз в объявление пихнул и готово. Не покидая функцию
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
интересное построение функции
мне нравится так, ибо мне лень городить отдельные неймспейсы для тестов отдельных функций
плюс сразу виден интерфейс функции: что подаётся на вход, что получаем на выходе

я так advent of code решал https://github.com/serioga/advent-of-code-2019/tree/master/src/advent
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
ну... на вкус и цвет. мне вот понравилось)
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
воу-воу... вкусняха. чуть позже гляну)
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
спасибо
источник

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
Sergey Trofimov
мне нравится так, ибо мне лень городить отдельные неймспейсы для тестов отдельных функций
плюс сразу виден интерфейс функции: что подаётся на вход, что получаем на выходе

я так advent of code решал https://github.com/serioga/advent-of-code-2019/tree/master/src/advent
Наверное, надо соблюдать баланс. Ибо если начать для какой-то функции расписывать все корнеркейсы, то большую часть файла будут занимать тесты и будет тяжелее по нему навигироваться
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Как мне кажется, что выглядит не очень красиво, но зато очень лениво. Слишком часто бывает лень открыть тесты и покрыть новую функцию там. deftest, testing блаблабла. А тут просто раз в объявление пихнул и готово. Не покидая функцию
лень можно побороть
а вот твой коллега будет читать твой код, его уже сложнее отправить смотреть на тесты, чтобы лучше понимать работу функции
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Наверное, надо соблюдать баланс. Ибо если начать для какой-то функции расписывать все корнеркейсы, то большую часть файла будут занимать тесты и будет тяжелее по нему навигироваться
ну, навороченный тест можно и под функцией написать в классическом виде
источник

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
Sergey Trofimov
лень можно побороть
а вот твой коллега будет читать твой код, его уже сложнее отправить смотреть на тесты, чтобы лучше понимать работу функции
Т.е. ты к тому, что осознать суть функции проще, когда тут же валяются тесты?
Ну да, верно в принципе
Но я всё же боюсь, что обычный файл на 100 строк  превратится в 400 с тестами к каждой функции. Но надо попробовать. Добавить ещё в хоткей, который фолдит все функции под :test в мете :)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Т.е. ты к тому, что осознать суть функции проще, когда тут же валяются тесты?
Ну да, верно в принципе
Но я всё же боюсь, что обычный файл на 100 строк  превратится в 400 с тестами к каждой функции. Но надо попробовать. Добавить ещё в хоткей, который фолдит все функции под :test в мете :)
я к тому, что понять описание функции проще, когда оно сопровождено примерами
такой способ позволяет сразу дать примеры не в виде текста описания, а в виде работающего кода
источник

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
Понял. Согласен. Ещё вспоминается, что некоторые примеры, я писал прямо в докстринг. Их следовало бы оформить как тест
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ещё есть вариант с with-test, когда определение функции оборачивается в блок с последующими тестами, но такая запись мне не показалась удобной
источник

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
Спасибо!
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
Аналогично)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а вот мой вариант, если бы я сам себе был ментором
с документацией и тестами для функций
https://gist.github.com/serioga/aea576577535c79c75e0d81987601e9a
подрихтовал немного
источник

E

ETL in Clojure — русскоговорящее сообщество
У меня вопрос, немножечко из серии "товарищ прапорщик, зарядите мне автомат, пожалуйста", по поводу композиции функций. Есть 1-арная f1, принимает строку в качестве аргумента. В результате применения функции к строке мы получаем новую строку. Эту строку я желаю передать f2 (которая тоже 1-арная) . Да, я знаю, что есть оператор ->, но мне хочется все же сделать это через comp. Можно попросить схематически описать #(comp (f2 ) f1  %), как происходит композиция в этом случае?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ETL
У меня вопрос, немножечко из серии "товарищ прапорщик, зарядите мне автомат, пожалуйста", по поводу композиции функций. Есть 1-арная f1, принимает строку в качестве аргумента. В результате применения функции к строке мы получаем новую строку. Эту строку я желаю передать f2 (которая тоже 1-арная) . Да, я знаю, что есть оператор ->, но мне хочется все же сделать это через comp. Можно попросить схематически описать #(comp (f2 ) f1  %), как происходит композиция в этом случае?
(comp f2 f1)
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
(comp f2 f1)
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Просто композиция - бинарный ассоциативный функциональный оператор )
источник

E

ETL in Clojure — русскоговорящее сообщество
Сейчас буду тестировать, благодарю)  да здравствует chat driven development )))
источник