есть два основных варианта, и они зависят от проблемы, которую решает ваш код
1.) Если ваше условие одинаково во всем файле кода c, то есть условие не изменяется, но код долженведут себя по-разному в нескольких местах.
то есть
/* prepare */
if(cond == 1){
/*prepare 1 */
}elseif(cond == 2){
/*prepare 2 */
}
/* run */
if(cond == 1){
/*run 1 */
}elseif(cond == 2){
/* run 2 */
}
, в этом случае вы должны просто рефакторировать вещи, чтобы быть в одном условии.т.е.
/* process and run */
if(cond == 1){
/* process 1 */
/* run 1 */
}elseif(cond == 2){
/* process 2 */
/* run 2 */
}
, если у вас есть изменяющиеся условия во всем коде.то есть
cond = DEFAULT_COND /* = 1 */;
/* prepare */
if(cond == 1){
cond = prepare_1();
}elseif(cond == 2){
cond = prepare_2();
}
/* run */
if(cond == 1){
/* run 1 */
}elseif(cond == 2){
/* run 2 */
}
в этом случае ваш код слишком сложен, чтобы его можно было просто рефакторизовать, поскольку переменная cond во время оценки кода «run» могла быть изменена кодом «process», в этом случае, но только в таком случае.Вы не сможете изменить код в единое условие.