【问题标题】:Streamlining Parameter Passing简化参数传递
【发布时间】:2016-07-10 16:54:43
【问题描述】:

我正在阅读 Code Complete 并且有一个关于“简化参数传递”的问题。作者说,如果您在多个例程之间传递参数,这可能表明需要将这些例程分解到一个类中,将参数作为类数据共享。

这是否意味着如果我有几个使用相同数据的单独类,我应该创建一个使用该数据的新类,然后继承以创建新类?

或者

这是否意味着如果我的程序中有一堆松散的例程,我应该继续将它们放入一个类中并获得封装等好处。

【问题讨论】:

  • 不是每个人都必须在手边预订,因此如果您可以在问题中包含准确的报价,那就太好了。
  • 您所指的文字中有一个“可能”,这并不意味着您应该做任何特别的事情,除非使用您自己的良好判断力确定您的代码是否可以从重组中受益。应用这个想法可能也会导致比你开始时更糟糕的混乱。

标签: c++ methods parameters class-design code-complete


【解决方案1】:

后者。看起来他们在谈论这样一个案例:

void function_1(std::string& my_data);
void function_2(std::string& my_data);

void main() {
    std::string my_data = "SomeString";
    function_1(my_data);
    function_2(my_data);
}

可以改成:

class MyClass {
    std::string my_data;
public:
    MyClass(const std::string& str) : my_data(str) {}
    void function_1();
    void function_2();
}

void main() {
    MyClass obj("SomeString");
    obj.function_1();
    obj.function_2();
}

其中function_1function_2 使用my_data 字段,而不必每次都传递字符串。

【讨论】:

  • 所以它是关于保持一段数据私有并在类中,而不是在类之间传递它。感谢您提供代码示例。
  • 嗯,这是一个简单的例子,所以可读性的提升并不大。但是,如果我们有 20 个变量必须传递给每个函数,那么只将它们传递给构造函数一次会更简洁。这似乎是他们的主要观点。不过,由于其他原因,封装很好。
猜你喜欢
  • 2018-06-14
  • 2020-05-20
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
相关资源
最近更新 更多