Apakah ini praktik yang baik untuk menggunakan #ifdef selama pengembangan untuk beralih di antara berbagai jenis perilaku? Sebagai contoh, saya ingin mengubah perilaku kode yang ada, saya punya beberapa ide bagaimana mengubah perilaku dan perlu beralih di antara implementasi yang berbeda untuk menguji dan membandingkan berbagai pendekatan yang berbeda. Biasanya perubahan dalam kode sangat kompleks dan berpengaruh pada metode yang berbeda dalam file yang berbeda.
Saya biasanya memperkenalkan beberapa pengidentifikasi dan melakukan sesuatu seperti itu
void foo()
{
doSomething1();
#ifdef APPROACH1
foo_approach1();
#endif
doSomething2();
#ifdef APPROACH2
foo_approach2();
#endif
}
void bar()
{
doSomething3();
#ifndef APPROACH3
doSomething4();
#endif
doSomething5();
#ifdef APPROACH2
bar_approach2();
#endif
}
int main()
{
foo();
bar();
return 0;
}
Ini memungkinkan untuk beralih di antara berbagai pendekatan dengan cepat dan melakukan semuanya hanya dalam satu salinan kode sumber. Apakah ini pendekatan yang baik untuk pembangunan atau apakah ada praktik yang lebih baik?
#ifdef
blok jika blok dimatikan. Kami mengalami kasus di mana kode dapat dengan mudah menjadi basi dan tidak dapat dikompilasi jika Anda tidak secara rutin membangun semua jalur.
#ifdefs
kurang rumit.