pf03 / newBot

BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Декомпозиция модулей #8

Closed KateBushueva closed 3 years ago

KateBushueva commented 3 years ago

На данный момент в коде во многих модулях намешано все сразу: классы, функции, типы с дочерними типами ... Взять, к примеру, модуль Interface.MLog : там все сразу вместе, разделенное вотербрейк-комментами. В данном случае для Лога лучше выделить отдельную папку, где сделать декомпозицию того, что сейчас есть. Разделить по модулями:

Такая проблема присутствует не только в MLog, но и в других модулях.

pf03 commented 3 years ago

Я думал об этом, но получается слишком уж большое количество модулей. Подумаю еще

KateBushueva commented 3 years ago

К вопросу о большом количестве модулей - в моем боте в финальной версии было 105 модулей (не считая тестов).. На 28 модулях можно смело делать декомпозицию. На самом деле, понятная структура - это один из ключевых моментов, на котором будут строиться дальнейшие улучшения кода: инкапсуляция на уровне модулей, отслеживание и регулирование зависимостей и т.д. Так что в данном случае декомпозиция неизбежна.

Sergey111991KV commented 3 years ago

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

pf03 commented 3 years ago

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

Сделал декомпозицию на части модулей. Вместо 28 теперь 48 модулей. В модуле Parsе.hs например точка разделения - монада Parser. Все вычисления, которые в ней, относятся к Internal

pf03 commented 3 years ago

Декомпозицию окончил. В итоге 57 модулей. Оставшиеся модули не вижу смысла делить

KateBushueva commented 3 years ago

я не совсем понимаю наличие Transformer.Instances, в котором по факту нет инстансов. В остальном вроде норм, давай структуру оставим как есть

pf03 commented 3 years ago

я не совсем понимаю наличие Transformer.Instances, в котором по факту нет инстансов. В остальном вроде норм, давай структуру оставим как есть в этом модуле функции, которые используются для определения инстансов. По логике их нужно в Internal, но тогда получаются циклические импорты между Internal.hs и Types.hs. Могу переделать чуть по другому, добавить папку State, в которой Types и Internal

KateBushueva commented 3 years ago

можно тогда переименовать модуль

pf03 commented 3 years ago

можно тогда переименовать модуль

переименовал Instances в State. Так норм?