2012-02-26 88 views
1

這一個現在困擾了我一段時間:)爲什麼「Set()」功能比修改公共變量更好?

假設我們有一個變量 - 爲什麼寫一個Set函數比簡單地修改變量的數據更好的做法(並將變量設置爲公共而不是私人)?

這少那的編碼方式,我看不到任何「安全」問題。

+2

請編輯以包含適當的語言標籤。 – DSM 2012-02-26 22:52:00

+1

你在說什麼語言? – Anton 2012-02-26 22:52:33

+0

因爲有一天你想添加一些東西,比如一個簡單的空檢查,並且在嘗試將該公共變量傳遞給setter時有1001個方法分解。 – 2012-02-26 22:53:28

回答

7

有時設置一個變量時,你可能想做些別的事情與其他給定值比立即將其放置在類的變量:例如,你可能要對其進行驗證或更新相關的另一個值。

基本上,它允許擁有該變量控制什麼可以做它的類,具體系列,當它改變時發生的事件的。

0

這一切都與面向對象以及如何嚴格你在教義做。如果你嚴格遵循所有的指導方針,那麼直接使用一個類的方法和標識符是不好的。技術上沒有異議。

這個討論是一樣的靜態 - 無靜電的討論。 (自稱)大師,發現了褻瀆行爲,但是如果你把你的整個程序都是靜態的,那麼你的電腦就沒有障礙了。

2

還需要提到的是,它並不總是更好地使用「設置」方法。盲目遵守模式可能會導致代碼過於複雜。如果課程只是簡單的(真的是簡單)數據容器,那麼公共訪問通常是可以接受的。例如,請看java.awt.Rectanglejava.awt.Point類。