Я выполняю рефакторинг 500 строк кода C ++ в main () для решения дифференциального уравнения. Я хотел бы заключить большие идеи нашего решателя в меньшие функции (то есть «SolvePotential (...)» вместо 50 строк числового кода).
Должен ли я кодировать это последовательно с помощью набора функций, принимающих очень длинные списки параметров, такие как:
int main(int *argc, void **argv){
interpolate(x,y,z, x_interp, y_interp, z_interp, potential, &newPotential);
compute_flux(x,y,z, &flux)
compute_energy(x,y,z, &eng)
...
// 10 other high-level function calls with long parameter lists
...
return 0;
}
Или я должен создать класс "SolvePotential", который будет называться так:
int main(int *argc, void **argv){
potential = SolvePotential(nx, ny, nz, nOrder);
potential.solve();
return 0;
}
Где бы я определял функции в SolvePotential, которые используют переменные-члены, а не длинные списки параметров, такие как:
SolverPotential::solve(){
SolvePotential::interpolate()
SolverPotential::compute_flux()
SolverPotential::compute_energy()
// ...
// 10 other high-level function calls with NO parameter lists (just use private member variables)
}
В любом случае, я сомневаюсь, что я буду многократно использовать код ... на самом деле, я просто рефакторинг, чтобы помочь с ясностью кода в будущем.
Может быть, это все равно что спорить «12» или «одна дюжина»? », Но как вы думаете?