程式設計中為什麼要把一些變數私有?

時間 2021-06-12 04:23:56

1樓:

私有化是原則(強制性),不是約定(建設性)。

朋友聚會時,常在各自喝水的杯子上寫上自己的名字(私有化)。否則,看著一大堆一樣的杯子,還記得哪個是自己杯子嗎(會忘記),有用過別人的杯子嗎(相互呼叫)?

2樓:

軟體開發的乙個重要原則就是講究職責分離,每個方法,類,模組到整個系統都有清晰定義的職責。

這些職責決定、形成了乙個領域(Domain),領域就像動物,比如獅子、猩猩的領域,在這個領域裡面,當然是不希望被外部所直接干涉和破壞。

領域與領域之間的互動,只希望通過嚴格定義好的介面與外部互動,互不干涉對方內政。

通過這樣嚴格的職責分離,我們可以得到更好的可維護性和可讀性。

3樓:

我現在的專案,原來的模型是我搭的,用封裝,私有,開放介面,新的構架師從天而降,說要全部變成public,這下可好,每次有變更,我除了要改自己的東西外,還要改隊友呼叫我的那一部分。

4樓:

自己開發暴露一些變數也會有問題。比如,你設計setname(string arg)來設定變數age的值,函式中你加上了判斷,如果傳入arg為f**k就改為hexie。如果你暴露name為public,你怎麼知道有這個控制?

你說你自己記性好,肯定記得,那你隊友記性也很好?如果是做的lib賣給別人,你的使用者怎麼知道你有這個控制?

5樓:任坤

不僅是程式設計中這樣,在設計任何產品時經常都會這樣來做。

假設你要設計一款手錶,只需要把表盤和旋鈕暴露給戴錶者即可,其他的內部零件最好封裝好,既美觀也簡單,不然容易磨損或者掉出,或者被使用者無意中旋鈕導致走表不准,耽誤事情。因為對於手錶的絕大多數使用者來說,他們的需求只是用手錶看時間,有時候走不准可以調時間,而不是知道裡面具體怎麼構造,齒輪之間怎麼切合,軸之間旋轉角速度如何,最好乙個齒輪有多少齒等等,如果暴露太多只有內部之間溝通而不涉及和使用者溝通的構造,那麼使用者的資訊負載就太大了,只是想要調表卻發現有一大堆齒輪在那邊,可能需要檢視手錶說明書才知道哪個齒輪是調表的。

因此,只暴露和使用者互動的介面,其他不互動的部分隱藏為私有的,在程式設計中,具體而言,可以通過公有、私有的方式來控制體系和外部溝通時的邏輯一致性,既可以促進體系執行的可靠程度,也可以減小使用者的資訊負載,大家開發的和用的都舒心。

=== 程式設計例子 ===

設想我們開發乙個類似手錶的類,裡面有個 GetLocalTime() 方法的功能是盡可能精確地獲取當前時區的時間。一般使用這個類的其他程式設計師需求只有乙個,獲知當前時區的時間,可能用這個時間值來做一些其他的事情。如果我們絲毫不在乎這個類的包裝,裡面除了 GetLocalTime(),還有一大堆別的公開的方法,(隨意編造的)如獲取和連線GPS裝置的方法、連線定位服務以及定位校準的方法、國際時區標準和有關協議對統一時間戳的計算方法、遠端銫原子鐘同步方法、雙向反饋校準時差方法、各種延遲和錯誤處理機制的方法、各種事件監聽方法等等等等。

首先其他使用這個類的開發者一般並不需要知道這個類內部是如何「盡可能精確地獲取到當地時間的」,如果把這些全部暴露給其他開發者,那麼就有潛在的危險:如果其他開發者錯誤的修改了某個銫原子鐘同步的全域性引數,那麼所有開發者獲取到的時間就都是錯誤的了;如果其他開發者過於頻繁地直接訪問內部連線GPS裝置的方法,可能GPS併發連線數太多就崩潰了,使得這個類本身難以管理併發連線,限制使用者對競爭性資源的可訪問性;如果其他開發者設定引數時沒有通過統一入口處理資料標準,使得不符合標準的引數傳輸到裝置,導致裝置障礙,也會造成系統的失敗。

由此可見,良好設計的公有/私有封裝可以避免掉上面的大部分問題,降低學習成本、提公升可維護性。

為什麼一些樂隊編曲時要把結他放在極左或極右

吉韻姐姐的小粉絲 這樣做是錯誤的。大多數樂隊幾乎不這麼處理,吉他確實應該放在左右位置,為了保證聲像清晰和頻段不打架。但是這個左右,並不是指極左或者極右,哪怕是兩把吉他做立體聲。通常,除了對於自然立體聲的音色 比如多個話筒錄製的弦樂組 其他的都不會考慮放在極左或者極右,因為那樣會導致那些音色從整個樂隊...

為什麼一些日本人名的中文譯名中含一些國人感到生僻的日本漢字?

常瑾明 和式漢字有一些是中國古漢字,可能還有一部分是他們自己造的,體系不一樣,而且文字發展也不一樣 和式漢字之美在於,很多字是象形字,比如風止住了,叫凪,農田裡很乾旱叫做畑,等等,而咱們的簡體字很多已經不具備這種能力了,比如美人抿嘴一笑叫做咲 嘴巴閉上 但是 笑 好像就看不出來 還有一些細微的差別,...

為什麼有時候會感覺現實中的一些事一些地點彷彿在夢裡夢到過去過?有點跟夢裡的東西很相似但是卻非常模糊?

這恰恰說明了,唯識論的正確性,這是可以被實證到的,既然佛法是正確的,就要聽從佛陀的教誨 精進修行適合自己的法門,就初學者來說,還是念佛法門比較好,既然人不是六祖,就要以求生淨土為願 持五戒十善,以念佛為契入點,時時刻刻,行起坐臥,佛號不斷,念念相續 普波居士 這種現象叫做夢兆,是眾生的業相在夢中的投...