Хорошо, так что по большей части переписывание API рабочего кода - плохая идея для начала. Две вещи должны произойти.
Во-первых, вам нужно, чтобы ваша команда решила заморозить код текущей рабочей версии этого файла.
Во-вторых, вам нужно взять эту рабочую версию и создать ветвь, которая управляет сборками, используя директивы предварительной обработки для разделения большого файла. Разделить компиляцию с использованием директив препроцессора JUST (#ifdefs, #include, #endifs) проще, чем перекодировать API. Это определенно проще для ваших SLA и постоянной поддержки.
Здесь вы можете просто вырезать функции, которые относятся к конкретной подсистеме в классе, и поместить их в файл, скажем mainloop_foostuff.cpp, и включить его в mainloop.cpp в нужном месте.
ИЛИ
Более трудоемким, но надежным способом было бы разработать структуру внутренних зависимостей с двойной косвенностью в том, как все это включается. Это позволит вам разделить вещи и по-прежнему заботиться о взаимозависимостях. Обратите внимание, что этот подход требует позиционного кодирования и поэтому должен сочетаться с соответствующими комментариями.
Этот подход будет включать компоненты, которые используются в зависимости от того, какой вариант вы компилируете.
Основная структура состоит в том, что ваш mainclass.cpp будет включать новый файл с именем MainClassComponents.cpp после блока операторов, подобного следующему:
#if VARIANT == 1
# define Uses_Component_1
# define Uses_Component_2
#elif VARIANT == 2
# define Uses_Component_1
# define Uses_Component_3
# define Uses_Component_6
...
#endif
#include "MainClassComponents.cpp"
Первичная структура файла MainClassComponents.cpp была бы там, чтобы вырабатывать зависимости внутри подкомпонентов, как это:
#ifndef _MainClassComponents_cpp
#define _MainClassComponents_cpp
/* dependencies declarations */
#if defined(Activate_Component_1)
#define _REQUIRES_COMPONENT_1
#define _REQUIRES_COMPONENT_3 /* you also need component 3 for component 1 */
#endif
#if defined(Activate_Component_2)
#define _REQUIRES_COMPONENT_2
#define _REQUIRES_COMPONENT_15 /* you also need component 15 for this component */
#endif
/* later on in the header */
#ifdef _REQUIRES_COMPONENT_1
#include "component_1.cpp"
#endif
#ifdef _REQUIRES_COMPONENT_2
#include "component_2.cpp"
#endif
#ifdef _REQUIRES_COMPONENT_3
#include "component_3.cpp"
#endif
#endif /* _MainClassComponents_h */
И теперь для каждого компонента вы создаете файл component_xx.cpp.
Конечно, я использую числа, но вы должны использовать что-то более логичное на основе вашего кода.
Использование препроцессора позволяет разделить вещи, не беспокоясь об изменениях API, что является кошмаром в производстве.
Как только вы закончите производство, вы сможете приступить к редизайну.