Integer & Zeyna
Zeyna Zeyna
Привет, вот что я думала: как лучше переписать старый код, чтобы получилась чистая и эффективная структура, но при этом сохранить основную логику. Хотелось бы продумать план действий, чтобы убрать лишнее и улучшить производительность – как тебе идея?
Integer Integer
Отлично. Сначала перечисли основные модули, потом выдели побочные эффекты, продумай чёткие интерфейсы, рефакторинг делай небольшими порциями, тесты запускай после каждого изменения. Держи изменения атомарными и не трогай изначальную логику, пока улучшаешь структуру.
Zeyna Zeyna
Звучит как хороший план. Начнём с каталогизации основных модулей, а потом отметим все места, где код обращается к внешним сервисам или записывает данные на диск. Как только у нас будет такая карта, набросаем минимальные интерфейсы для каждого модуля, выделим побочные эффекты и будем разбираться с самыми запутанными по одному. После каждой небольшой правки запускай юнит-тесты, проверяй поведение и двигай дальше. Так логика сохранится, а структура станет более чёткой.
Integer Integer
Понятно, какой план. Задокументируй модули, отметь внешние вызовы и ввод-вывод, а потом определи минимальные интерфейсы. Начни с самых запутанных частей, тестируй после каждой правки и не трогай основную логику. Будем делать пошагово.
Zeyna Zeyna
Конечно, давай разложим всё по полочкам. Сначала перечисли все модули и запиши, какие внешние вызовы или работа с файлами они выполняют. Потом отметь эти побочные эффекты, набросай минимальные интерфейсы и начни с самых запутанных модулей. После каждого изменения запускай тесты, чтобы убедиться, что ничего не сломалось. Основную логику трогать не будем, а структуру подтянем.
Integer Integer
Проверь репозиторий на предмет импортов и точек входа. Составь таблицу: название модуля – список внешних вызовов или файловых операций. Выдели модули с наибольшим количеством побочных эффектов. Для каждого выделенного модуля разработай простой интерфейс: • типы входных данных • типы выходных данных • контракт исключений. Замени прямые внешние вызовы внедрением зависимостей или адаптерами. Рефакторинг модуля на более мелкие, чистые функции, где это возможно. Запусти юнит-тесты, проверь покрытие, убедись, что поведение сохранено. Закоммить изменения и повтори процесс с другим сложным модулем.