直接访问成员变量或作为参数传递?

Tom*_*Tom 10 c++ oop readability

我注意到,即使尊重OOD的单一责任原则,有时课程仍然会变得很大.有时直接在方法中访问成员变量感觉就像拥有全局状态一样,当前范围中存在很多东西.仅通过查看当前工作的方法,就不可能确定当前范围中可访问的invidiual变量的来源.

最近和朋友一起工作时,我意识到我编写了比他更详细的代码,因为我将成员变量作为参数传递给每个方法.

这是不好的做法吗?

编辑:示例:

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; }
};
Run Code Online (Sandbox Code Playgroud)

Ant*_*ony 6

如果一个类有成员变量,请使用它们.如果要显式传递参数,请将其设为自由函数.传递成员变量不仅会使代码更加冗长,而且还会违反人们的期望并使代码难以理解.

类的整个目的是创建一组具有隐式传递的共享状态的函数.如果这不是您想要做的,请不要使用类.