Чи є хорошою практикою використовувати #ifdef під час розробки для переключення між різними типами поведінки? Наприклад, я хочу змінити поведінку існуючого коду, у мене є кілька ідей, як змінити поведінку, і необхідно переключитися між різними реалізаціями, щоб перевірити і порівняти різні підходи. Зазвичай зміни коду є складними і впливають на різні методи в різних файлах.
Я зазвичай ввожу кілька ідентифікаторів і роблю щось подібне
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;
}
Це дозволяє швидко перемикатися між різними підходами і робити все лише в одній копії вихідного коду. Це хороший підхід для розвитку чи є краща практика?
#ifdef
блоках, якщо блок вимкнено. Ми зіткнулися з випадками, коли код може легко стати застарілим, а не скластись, якщо ви не будуєте звичайно всі шляхи.
#ifdefs
громіздких.