2016-04-16 30 views
1

在閱讀一些重構慣例,我偶然發現this article自封裝有什麼好處?

筆者參數修改下面的代碼與getter和setter方法,我想他們應該是private但反正什麼是這樣做有什麼好處?我們是不是引入了函數調用開銷?

前:

private int _low, _high; 
boolean includes (int arg) { 
    return arg >= _low && arg <= _high; 
} 

後:

private int _low, _high; 
boolean includes (int arg) { 
    return arg >= getLow() && arg <= getHigh(); 
} 
int getLow() {return _low;} 
int getHigh() {return _high;} 

回答

2

比方說,由於某種原因,你需要你的類屬性的名字改變從_low_high_min_max。在第一個版本中,您還需要修改includes()函數。在第二個版本中,你只需要修改獲得者。在你的例子中,好處很小,但是在更大的班級中,它可以爲你節省大量的工作。

稍微更復雜的示例,其中的上限值不再存儲而是從下限值和一個間隔導出:

private int _low, _interval; 
boolean includes (int arg) { 
    return arg >= getLow() && arg <= getHigh(); 
} 
int getLow() {return _low;} 
int getHigh() {return _low + _interval;} 

同樣你只需要修改吸氣劑。

關於開銷:根據您使用的語言,編譯器會優化函數調用。