大丈夫ですから、ほとんどの場合、量産コードのAPIを書き換えることは、最初から悪い考えです。2つのことが起こる必要があります。
1つは、実際にチームにこのファイルの現在の製品バージョンでコードをフリーズさせることを決定させる必要があります。
2つ目は、この本番バージョンを取得し、前処理ディレクティブを使用してビルドを管理するブランチを作成し、大きなファイルを分割する必要があります。JUSTプリプロセッサディレクティブ(#ifdefs、#includes、#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の変更を心配することなく、物事を分割することができます。
生産が決まったら、実際に再設計を行うことができます。