在c ++类中编写许多void方法,并跟踪变量的变化

时间:2013-10-21 04:15:21

标签: c++

我对来自非常温和的C背景的C ++有点新意,所以如果这个问题看起来很简单,请原谅。

我目前已经获得了一些C ++源代码来阅读和修改。

然而,在我看来,代码对于新手来说非常难看,但我不确定代码是否被认为是优秀的C ++实践。

基本上只有一个名为STORAGE的类,所有信息都是公开的。

class STORAGE
{
public:
  STORAGE();
  virtual ~STORAGE();

  //DATA
  int np,nn;
  int istep;
  int print_step;
  //...and many more variables.


  //METHODS
  void eos(double rho, double e, double &p, double &cs);
  void ThermalEnergy(double rho,double &e,double p);
  void allocation();
  void initialization();
  void var_dt();
  // and many more methods which return void, 

}; 

现在当我阅读调用这些方法的算法时,我看到他们每个都修改了STORAGE的许多成员变量,许多方法在一长串方法调用中修改了同一组变量。许多方法对类型void A ()

非常恼火

使用这种风格,似乎很难在心理上跟踪大量成员变量的变化。

我的问题:在使用类时,这种编程风格是否与C ++相同?给一个方法访问该类的所有成员似乎有点危险,似乎可能会出现很多错误的代码。

在心理上对我来说,编写代码看起来要简单得多,如果我知道函数调用中唯一被修改的变量是函数的输入变量。

1 个答案:

答案 0 :(得分:1)

“......所有信息都是公开的” 是的,这是不好的做法,与封装的基本概念相矛盾。课外的每个人都能看到并修改所有成员。理想的是:使数据成员保密,并提供公共get / set方法(根据需要)。

“使用类时,这种编程风格是否与C ++相同?” - 常见但不好。

“给一个方法访问班级的所有成员似乎有点危险” 我认为这很常见,成员函数应该可以访问成员变量。否则,还有谁会:)但是,如果您仍希望阻止它们修改成员变量,则可以使用将该函数声明为const。 (上面的Connor已经描述了这种方法)。