Closed KateBushueva closed 3 years ago
В новой версии я этот процесс упростил, убрал лишнее. Убрал флаг updateIeFromFile из конфига Исправил работу с updateId для VK (персистентность)
да, так хорошо
https://github.com/pf03/newBot/blob/61509e8551ee3684c3a357f0b67970b6d180844f/src/Transformer/Functions.hs#L14
в данной функции много вложенных условных операторов. Вообще на кейсы/ифы стояло ограничение вложенности. По-хорошему, лучше избегать даже двойной, а тем более тройной вложенности. Это отвлекает от основного хода функции на детали. Детали лучше вынести в отдельные функции (здесь можно воспользоваться чем-то вроде either
, maybe
...). Можно саму функцию превратить в пайплайн: прочитать конфиг -> запустить действие.
Тут у тебя и where внутри кейса.. лучше избегать такого
Такой еще момент, ты оборачиваешь, читай скрываешь, ход работы программы внутрь тайпклассов. Проблема в том, что логику работы кода сложно отследить, приходится прыгать от класса к классу, чтобы понять, какое действие в данный момент совершает твой код. Я пытаюсь донести, что на верхнем уровне абстракции должен логически прослеживаться основной ход работы программы. В твоем коде видно чтение конфига, видно запуск программы (правда запуск является обработчиком одного из условий конфига, хотя логически это равнозначные вещи, просто последовательные). Однако основные действия программы происходят уже внутри трансформеров и чтобы их найти нужно спуститься на несколько уровней внутрь, хотя логически это должна быть последовательная цепочка действий верхнего уровня
В новой версии я оставил на вeрхнем уровне Transformer.run два действия - runConfig, showValue, а также механизм работы с потоками
Мне нравятся трансформеры) молодец, что их использовал, только нужно как Катя сказала и вправду делать все функции в монаде самодокументирующимися, а названия типа state' и etuple ( как минимум eTuple) избегай - боже я понимаю почему меня за это ругают :) чтобы понять, что здесь значат они - нужно смотреть функции глубже
пропиши, пожалуйста, ход работы программы в этой функции по шагам, что-то тут лишнее, на мой взгляд.. https://github.com/pf03/newBot/blob/7ba8545adbe74e4705cc72f91994aedeeb848d17/src/Logic/Bot.hs#L18