c++ - 重构具有相同参数的静态成员函数

标签 c++ class static-methods

我有一个静态帮助器类,它有几个使用相同参数的函数:

class helper {
public:
  static double getValue(const CString &a, const CString &b, const CString &c, ... );
private:
  static double foo(const CString &a, const CString &b, const CString &c, ... );
  static bool bar(const CString &a, const CString &b, const CString &c, ... );
  static bool qux(const CString &a, const CString &b, const CString &c, ... );
  static double wad(const CString &a, const CString &b, const CString &c, ... );
  static int xyz(const CString &a, const CString &b, const CString &c, ... );
};

像这样使用它:

double value = helper::getValue(a, b, c, k, ...);

getValue() 将调用 foo(),后者将调用 bar()qux()wad()
他们都需要相同的a、b、c数据集。

可以看到,有很多重复的参数,看起来有点乱。

有什么办法可以重构它吗?

最佳答案

是的,创建一个包含所有参数作为成员的类/结构Params。让您的静态函数接受 Params 的实例而不是所有参数。您的代码将如下所示:

struct Params {
  const CString &a;
  const CString &b;
  const CString &c;
   ...
}

class helper {
public:
  static double getValue(const Params & p);
private:
  static double foo(const Params & p);
  static bool bar(const Params & p);
  static bool qux(const Params & p);
  static double wad(const Params & p);
  static int xyz(const Params & p);
};

这样您只需创建一次 Params 对象并将其传递。

关于c++ - 重构具有相同参数的静态成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30064986/

相关文章:

C++ 继承和共享/非共享函数

C# 有没有办法使类中对象的属性在类本身之外不可编辑?

java - 播放不同类(class)的音频?

c++ - 为什么我缺少模板参数?

c++ - 为什么我需要在 g++ 中使用 typedef typename 而不是 VS?

c++ - 如何 move 包含 unique_ptr 作为成员的对象 vector ?

c++ [gamestate]函数不接受正确的参数错误

c++ - 如何将使用参数包和类型名的类作为函数的输入参数(C++)

c# - 获取父对象的静态方法

java无法从同一个类中获取静态变量的值