Doge
Не совсем бизнес логика в традиционном понимании, но и не инфраструктурная вещь.
Λ ll И K X
ну можно сказать утилитарное
Doge
ну можно сказать утилитарное
Я всё же его ближе к бизнес логике определеяю.
Инфрастурктурных задач никаких он не выполняет, по сути чистый сервис, который занимается именно вычислениями.
Doge
о круто и как вам?
Но в целом общее впечатление, что это именно что системный язык и прям обычную бизнес логику на нём писать не очень удобно.
То есть, когда я пишу какой-то очередной подтверждатель заказов, мне не хочется думать о том, кто там как памятью владеет, какой у кого лайфтайм и т.п.
Just
угу
Just
я думал на досуге выучить системный язык еще какой, С++ 14-17 выбирал и Раст
Just
ну С++ у меня базовые знания есть какие-то уже, а вот Rust с нуля надо учить
Doge
угу
Но из плюсов - даже очень наивный и тупой код даёт очень приличную производительность за которую в других языках приходится биться.
Doge
Надо его воспринимать как некое странное слияние си и ML-подобного языка с линейными типами и тайпклассами.
Doge
И проектировать приложение соответственно.
Диёр
у меня ощущение будто правое ухо чуток оглохло или с наушниками что-то не так
когда пробую чуток баланс направо сместить сразу чувствуется что звук очень резко сместился, будто он и был на правильном месте, но когда обратно всё меняю кажется будто баланс совсем чуть-чуть налево уполз
Диёр
это у меня мозги плавятся или шо
Viacheslav
Just
вот тайпклассы мне там понравились в расте
Mark
Диёр
тут комнатки по 3-5 чел
Mark
Неужели три человека могут создать столько шума, чтобы сидеть в наушниках?
Диёр
Нет, просто музыку слушаю)
Mark
Ужас!
Диёр
написал тесты, выдался диалог из ряда:
-ты чо совсем тупой, ты зачем сюда посылаешь строки, но просто разные?
-два кейса, где одна структура и разные строки, я хочу проверить что жсон собирается в зависимости от содержания, а не как-то по рандому
-ты чо это же одинаковый кейс
-а как бы ты протестил функцию, которая принимает число и говорит положительное ли оно?
-только три кейса: -1, 0 и 1
Диёр
я мб рили тупой, но если я хочу побольше кейсов покрыть, то эт хуево или шо
Диёр
и почему достаточно 3 кейсов для функции, которая говорит что число положительное, тоже понять не могу
Диёр
над подумать
Ilya
Самое время предложить им property-based тестирование!
Диёр
Я кстати предложил
Диёр
Диёр
Диёр
на такой кейс скажут "ты рили тупой"
Ilya
:(
Hog
походу(
ну, я просто продолжил мысль - если ты "вручную" несколько разных строк посылаешь, то чем это будет отличаться от N строк при property-based?
Ilya
Я вообще не понимаю, зачем такую функцию тестить.
Диёр
Диёр
хотя я по идее при написании теста не должен ведь знать чем оно жсончики делает, не делает ли сайдэффекты и не выкинет ли панику если строка не той длинны будет
Ilya
Поэтому переходи сразу к интеграционным!
Ilya
Покажи им доклад Молдована.
Ilya
Пересади на F#.
Ilya
К пятнице управишься?
Roman
А вот с property based testing не ясно — как их правильно писать, чтоб в тестах не дублировать полностью логику?
Ilya
Ilya
Как я понял, в тестах должна быть верификация, а не полностью логика. Но я тупой.
Roman
Пересади на F#.
должно быть нетрудно. У них вроде open minded команда, да и переход с пыхи на фшарп не такой уж радикальный
Ilya
Ну тогда точно к этой пятнице управятся.
Диёр
и всё такое
Hog
Roman
но возможно я как-то не так вижу это
Roman
Диёр
мне на ффпрофит глава про проперти бейзед тесты облегчила понимание как оно работает
Roman
Roman
о, в финку опять ищут пхпшника на 4к евро
Диёр
кидай ссылку
https://fsharpforfunandprofit.com/posts/property-based-testing/
Ilya
Так проперти тестирование не на одной простенькой функции лучше делать, вроде бы. Слишком запарно.
Диёр
Диёр
там сложно будет
Диёр
пока тесты напишешь можно всё приложение переписать
Ilya
Поэтому надо где-то посередение!
Roman
Ilya
Я всё понимаю, но проперти тестирование для функции isPositive -- это ж маразм. Проще открыть метод и прочитать одну строчку кода.
Диёр
Диёр
на гошечке пишешь хрен поймёшь же оно пуляет куда-нибудь или нет
Mark
Ну, я не знаю, что за специфика. Пытаюсь объяснить ход мысли товарища, если вдруг что.
Диёр
ну и вообще функция принимает interface{}
Диёр
как её тестировать то
Диёр
хотя заранее известно, какой именно тип туда должен долететь
Mark
Многие тесты — многие печали. Всякий рефакторинг из быстрого и приятного занятия превращается в медленное и мучительное. Код переписал, сломалось триста тестов. Уж лучше бы сломалось сто, всё легче.
Диёр
Mark
Ну это на будущее. Тесты то для этого пишут, чтобы потом рефакторить можно было как бы безопасно.
Anonymous
Anonymous
а изменение реализации может изменить функционал (если спецификация покрывает не все кейсы)
Dr. Friedrich
https://github.com/dotnet/fsharp/pull/6805#issuecomment-578721290
> dsyme
> Note I'm not particularly interested in this change supporting the SRTP-laden code that does (largely pointless) over-abstraction of code in the name of "maximal sharing" or simulating category theory - this tends to serve little actual value and makes code highly obscure, and SRTP was never designed for these purposes. Indeed if possible I'd prefer to disallow or deprecate that kind of code.
Dr. Friedrich
Батюшка наш родной, Дон Сайм, хочет задепрекейтить функциональных астронавтов.
Ilya
Ну фсё, закапывайте фшарп.