ОК, так что по большей части переписывание API рабочего кода является плохой идеей для начала.Должны произойти две вещи.
Во-первых, вам нужно, чтобы ваша команда решила заморозить код в текущей рабочей версии этого файла.
Во-вторых, вам нужно взять эту рабочую версиюи создайте ветвь, которая управляет сборками, используя директивы предварительной обработки, чтобы разделить большой файл.Разделить компиляцию с использованием директив препроцессора JUST (#ifdefs, #include, #endifs) проще, чем перекодировать API.Это определенно проще для ваших соглашений об уровне обслуживания и постоянной поддержки.
Здесь вы можете просто вырезать функции, которые относятся к определенной подсистеме в классе, и поместить их в файл, например 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, что является кошмаром впроизводство.
Как только вы закончите производство, вы можете приступить к редизайну.