慎重使用Get/Set成員函數(二)Set函數和其他修改函數的替代辦法

慎重使用Get/Set成員函數(二)Set函數和其他修改函數的替代辦法
黃國強 2011-7-19
文說到,儘量避免使用Get和Set這樣的函數,下面介紹的是替代辦法。
第一步,把Set中的函數參數都放到構造函數中。
第二步,把所有其他的修改函數都變成不變函數。
比如下面的代碼:
class CSample
{
public:

void    Plus(int x){m_nVal+=x;}

};

這個Plus函數就是典型的修改函數,需要改成這樣的形式。 CSample Plus(int x)const;

面兩步完成後 ,上次的例子,應該變成這樣:
class CSample
{
...
private:
int m_nVal;

public:
CSamle(int nVal = 0);

CSample Plus(int x)const{return CSample(m_nVal+x);}
...
};

然這個CSample類變成了一個值對象。值對象的好處很多,舉一個例子,如果在函數Plus內部出現了異常,可以安全的處理,因爲原先對象並沒有改變。
的人擔心效率問題,我覺得這是不必要的。現在的PC已經足夠好了,編譯器也足夠的聰明,我們把程序寫對纔是最重要的,性能問題是等到真正出現了,我們再來考慮。
發佈了93 篇原創文章 · 獲贊 11 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章