gpt4 book ai didi

oop - 分解大成员函数

转载 作者:行者123 更新时间:2023-12-04 19:29:29 24 4
gpt4 key购买 nike

分解成员函数

在一个类中有一个相当长的成员函数。假设我们有

class Customer {
public:
void process();

...
};

process 方法本质上很长,由几个不同的脚步。您希望这些步骤是它们自己的功能,以避免process 方法中的多个抽象级别。我想到了这些不同的选项(包括 noop-alternative):

为类(class)外的步骤创建独立的函数。

double step_a(vector<Order> orders, double foo);
void step_b(double bar);

void Customer::proccess()
{
double foo;
...
double bar = step_a(this->orders, foo);
...
step_b(bar);
};

顾虑:类(class)的独立性较差。独立功能是如此特定于过程功能,他们永远不会对任何人感兴趣其他代码,使将它们保留在类之外感觉不自然。

创建私有(private)方法。

class Customer {
public:
void process();
private:
double step_a(double foo);
void step_b(double bar);
};

问题:这些步骤的私有(private)方法(至少其中一些)不会对任何类(class)成员进行操作。它们没有副作用,只是从参数计算一个值并返回它,所以他们根本不需要成为类的成员函数。

保留 Customer::process 原样

问题:函数变得很长,并且可能难以阅读,因为所有步骤中的细节使得很难看到步骤的全貌该过程包含。

问题:

处理这个问题最干净的方法是什么?

(也许以上都不是,但有些是我没想到的。)

最佳答案

这个问题并不是真正的语言不可知论者。并非所有语言都有独立的功能。在 C++ 或 C# 中,我可能会使用私有(private)成员函数(如果可能的话是静态的)。

在 C++ 中,您可以使用独立函数(可能在匿名命名空间中),因此它们对外部不可见。

关于oop - 分解大成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com