Est-ce une bonne pratique d'utiliser #ifdef pendant le développement pour basculer entre différents types de comportement? Par exemple, je veux changer le comportement du code existant, j'ai plusieurs idées pour changer le comportement et il est nécessaire de basculer entre les différentes implémentations pour tester et comparer différentes approches. Les modifications de code sont généralement complexes et influencent différentes méthodes dans différents fichiers.
J'introduis généralement plusieurs identifiants et je fais quelque chose comme ça
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;
}
Cela permet de basculer rapidement entre différentes approches et de tout faire en une seule copie du code source. Est-ce une bonne approche pour le développement ou existe-t-il une meilleure pratique?
#ifdef
blocs si le bloc est désactivé. Nous avons rencontré des cas où le code peut facilement devenir obsolète et ne pas être compilé si vous ne créez pas systématiquement tous les chemins.
#ifdefs
moins encombrant.