我在main()中重构了500行的C++代码来求解微分方程.我想把我们的求解器的重要思想封装成更小的函数(即"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'还是'打了十几个'?",但你怎么看?
按顺序写,然后重构,如果有什么你认为你可以重用或会更清楚.
此外,SolvePotential类没有多大意义,因为类应该是具有SolvePotential方法的Object.