我注意到,即使在遵守OOD的单一责任原则时,有时候类仍然会变大。有时在方法中直接访问成员变量感觉像是具有全局状态,并且在当前范围中存在很多东西。仅仅通过查看当前工作的方法,就不可能再确定当前范围内的可访问变量的来源。直接访问成员变量或作为参数传递?
当与朋友一起最近的工作,我发现我写的比他更冗长的代码,因为我通过成员变量仍参数为每个单独的方法。
这是不好的做法?
编辑:例如:
class AddNumbers {
public:
int a, b;
// ...
int addNumbers {
// I could have called this without arguments like this:
// return internalAlgorithmAddNumbers();
// because the data needed to compute the result is in members.
return internalAlgorithmAddNumbers(a,b);
}
private:
int internalAlgorithmAddNumbers(int sum1, int sum2) { return sum1+sum2; }
};
如果你的课程太大,将它们分开。如果你有一个成员变量使用它。如果你在一个方法中没有使用成员变量,它应该是'static',但这样做听起来很奇怪。 – Flexo 2012-08-04 17:29:08
不好意思,我的英文似乎有点小问题。你传递成员变量作为参数?公共成员变量?或者这些成员变量的新值?我有点困惑。 – ATaylor 2012-08-04 17:29:44
对不起,我不明确。在实现算法时,我通常会重新迭代它在方法签名中使用的参数,但算法需要的数据实际上可以直接从成员变量中拉取。让我们假设你有一个类,它添加了两个数字,并且有两个数字a和b作为成员变量。然后,而不是具有零参数的私人添加方法,我仍然会定义一个采用2个int参数的函数。像这样,我以后可以在课堂外重复使用该算法。 – Tom 2012-08-04 17:32:29