Как упростить функцию с двумя циклами или лучше оставить как есть?
У меня есть две почти одинаковые функции где два цикла одинаковые, но код внутри разный, как мне сделать более правильно Оставить так же как есть или изменить обе функции до одной или как вы делаете когда сталкиваетесь с таким кодом, просто интересно какой метод вы считаете правильным.
template <class T1>
void function_A(T1 & array_test) {
for (int h = 0; h < 3; ++h) {
for (int i = 0; i < 7; ++i) {
// КОД 1
}
}
}
template <class T1>
void function_B(T1 & array_test) {
for (int h = 0; h < 3; ++h) {
for (int i = 0; i < 7; ++i) {
// КОД 2
}
}
}
Сейчас так, зависит от условия выполнить одну или другую функцию
if (functiontest == 0) {
function_A(array_test);
}
if (functiontest == 1) {
function_B(array_test);
}
Я думаю сделать так, но не уверен что это лучше чем верхний вариант, зато внутри функции будет только код без циклов, но и передавать нужно будет три аргумента а не один
for (int h = 0; h < 3; ++h) {
for (int i = 0; i < 7; ++i) {
if (functiontest == 0) {
function_A(h, i, array_test);
}
if (functiontest == 1) {
function_B(h, i, array_test);
}
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Код можно записать в виде некоторой функции? Тогда можно сделать так:
template <class T1, class Func>
void function(T1 & array_test, Func f) {
for (int h = 0; h < 3; ++h) {
for (int i = 0; i < 7; ++i) {
f(.......);
}
}
}