c++ - 类成员值的合法或错误成员使用?
问题描述
****编辑***在几条评论后基于预感批准了我自己的意见(作为论据传递)
我真正追求的是关于什么应该或不应该用作班级成员的指导方针****编辑***
假设 Class Example 的公共函数很少
class Example
{
public:
A(int x);
G();
H();
Z();
private:
B();
C();
D();
E()
}
正在调用 A 并调用 A->B->C->D->E。在 E 函数中,我们需要使用在 A 中获得的 X 参数,但 B,C,D 没有任何内容。
一种选择是将 int x 存储为类成员,然后在 E 中获取它。另一种方法是将它作为参数通过 B->CD->E 传递。
在我看来,将其存储为成员是一种不好的做法,因为它与类状态或数据无关,但在大多数代码中,我看到这就是所做的。
试图用谷歌搜索类成员的合法用法,但没有找到任何东西。
在我看来,oop 中的成员是使用全局变量的另一种不好的做法。
我在哪里可以找到关于它的意见或数据?
我正在使用 C++
解决方案
另一种方法是通过 B->CD->E 作为参数传递它。
这个选项很有意义。
如果 E 需要一个参数,那么它应该有一个参数。如果 D 调用 E,则 D 应提供该参数。如果 D 不能另外提供一个,那么它也需要那个来接受那个论点,依此类推。我推荐这种方法。
我认为将其存储为成员是一种不好的做法,因为它与类状态或数据无关
这是合理的推理。
还要考虑所有这些函数是否都引用对象本身。如果不是,它们可能应该是静态成员,甚至是自由函数。
推荐阅读
- android - 在 android auto 中删除 get to current queue button for exoplayer
- sirikit - iOS SiriKit:在 Intent 的“resolve”和“handle”方法之间传递数据
- python-3.x - 如何使用包含超过 1 个单词但整个短语只有 1 个标签的短语更新 spaCy 的词性标注器?
- python - 如何使用 HatchPattern 用模式填充堆积条形图
- powershell - 为什么 Powershell Import-Csv 在此 CSV 文件上无法正常工作?
- c# - Net Core 自动审查未优化的实体框架查询
- r - 您如何将项目拼凑在一起,以免丢失索引?
- c# - TObase64String 未编码我的访问令牌,导致 401 未经授权
- docker - 无法停止、终止或删除 Docker 容器
- python - AttributeError:“tensorflow.python.framework.ops.EagerTensor”对象没有属性“decode”