0

我来自非常温和的 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++ 是否通用?让方法访问类的所有成员似乎有点危险,而且似乎会出现很多错误代码。

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

4

1 回答 1

1

“..所有信息都是公开的”是的,这是不好的做法,并且与封装的基本概念相矛盾。班级以外的每个人都可以看到和修改所有成员。理想的是:将数据成员私有化,并提供公共的 get/set 方法(取决于需要)。

“在使用类时,这种编程风格对 C++ 来说是不是很常见?” ——普通但不好。

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

于 2013-10-21T04:43:21.430 回答