프로덕션 코드의 API를 다시 작성하는 것은 시작으로 나쁜 생각입니다. 두 가지 일이 발생해야합니다.
하나, 실제로 팀에서이 파일의 현재 프로덕션 버전에서 코드 동결을 수행하도록 결정해야합니다.
둘째,이 프로덕션 버전을 가져 와서 사전 처리 지시문을 사용하여 빌드를 관리하는 브랜치를 작성하여 큰 파일을 분할해야합니다. 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 변경에 대해 걱정할 필요없이 작업을 분할 할 수 있습니다.
생산이 확정되면 실제로 재 설계 작업을 수행 할 수 있습니다.