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; }
};