Tamam, çoğunlukla üretim kodunun yeniden yazılması için API başlangıç olarak kötü bir fikirdir. İki şey olması gerekiyor.
Birincisi, ekibinizin bu dosyanın mevcut üretim sürümünde bir kod dondurma yapmaya karar vermesi gerekir.
İkincisi, bu üretim sürümünü almanız ve büyük dosyayı bölmek için önişleme direktiflerini kullanarak yapıları yöneten bir şube oluşturmanız gerekir. Derlemeyi SADECE önişlemci yönergeleri (#ifdefs, #includes, #endifs) kullanarak bölmek API'yi yeniden kodlamaktan daha kolaydır. SLA'larınız ve sürekli desteğiniz için kesinlikle daha kolay.
Burada, sınıf içindeki belirli bir alt sistemle ilgili işlevleri kesebilir ve bunları mainloop_foostuff.cpp diyelim bir dosyaya koyabilir ve onu doğru konumda mainloop.cpp'e ekleyebilirsiniz.
VEYA
Daha fazla zaman alan ancak sağlam bir yol, şeylerin nasıl dahil edileceğine dair iki yönlü dolaylı bir iç bağımlılık yapısı tasarlamak olacaktır. Bu, işleri bölmenize ve eş-bağımlılıklarla ilgilenmenize izin verecektir. Bu yaklaşımın konumsal kodlama gerektirdiğini ve bu nedenle uygun yorumlarla birleştirilmesi gerektiğini unutmayın.
Bu yaklaşım, hangi varyantı derlediğinize bağlı olarak kullanılan bileşenleri içerir.
Temel yapı, mainclass.cpp dosyanızın, aşağıdaki gibi bir ifade bloğundan sonra MainClassComponents.cpp adlı yeni bir dosya içermesidir:
#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 dosyasının birincil yapısı, aşağıdaki gibi alt bileşenler içindeki bağımlılıkları çözmek için orada olacaktır:
#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 */
Ve şimdi her bileşen için bir component_xx.cpp dosyası oluşturursunuz.
Tabii ki sayıları kullanıyorum ama kodunuza göre daha mantıklı bir şey kullanmalısınız.
Önişlemci kullanmak, üretimde kabus olan API değişiklikleri hakkında endişelenmenize gerek kalmadan işleri bölmenizi sağlar.
Üretimi yerine getirdikten sonra yeniden tasarım üzerinde çalışabilirsiniz.