ตกลงดังนั้นส่วนใหญ่เขียนใหม่ API ของรหัสการผลิตเป็นความคิดที่ไม่ดีเป็นจุดเริ่มต้น สองสิ่งต้องเกิดขึ้น
ก่อนอื่นคุณต้องให้ทีมของคุณตัดสินใจที่จะหยุดการทำงานของไฟล์นี้ในเวอร์ชันการผลิตปัจจุบันของไฟล์นี้
สองคุณต้องใช้เวอร์ชันการผลิตนี้และสร้างสาขาที่จัดการการสร้างโดยใช้คำสั่ง preprocessing เพื่อแยกไฟล์ขนาดใหญ่ การแยกการรวบรวมโดยใช้คำสั่ง preprocessor ของ 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 ซึ่งเป็นฝันร้ายในการผลิต
เมื่อคุณตัดสินการผลิตแล้วคุณสามารถทำงานออกแบบได้จริง