当前位置:  开发笔记 > 编程语言 > 正文

面向对象还是顺序?

如何解决《面向对象还是顺序?》经验,为你挑选了1个好方法。

我在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'还是'打了十几个'?",但你怎么看?



1> Joe Phillips..:

按顺序写,然后重构,如果有什么你认为你可以重用或会更清楚.

此外,SolvePotential类没有多大意义,因为类应该是具有SolvePotential方法的Object.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有