我注意到,即使在遵守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