1. 程式人生 > >變數私有化和函式私有化,以及私有化的好處

變數私有化和函式私有化,以及私有化的好處

變數私有化

為什麼變數要私有化?

在一個結構良好的程式中,獨立的模組之間通過在模組間傳遞引數的函式呼叫來交換資料。在大多數情況下,尤其是剛開始養成程式設計習慣的時候,最好確保每個全域性變數不會被一個以上的模組引用。為了避免兩個模組引用同一個全域性變數的可能性,可以將變數私有化。

變數如何私有化?

變數私有化是在宣告前用關鍵字static,如:

static int cpos;

這個宣告定義cpos為一個全域性整型變數,在所定義的模組裡的任何地方都可見,但是對於別的模組是無效的,因此它是當前模組私有的。

說明:

在大多數情況中,最好認為static就是private(類似於C++)的同義詞,這樣更能貼切地描述它的用途。用關鍵詞static宣告變數可以使它們對於應用它們的函式來說是私有的。

函式私有化

為什麼函式要私有化?

有人可能會問,無論函式還是過程,本身就是為了執行某一功能,應該是是要被呼叫的,那麼為什麼還要私有化呢?這裡要清楚另外一個概念:介面。

介面的說明可參照以下資料:

介面很重要的作用之一是開放某些供使用者使用的介面,隱藏起介面內部複雜的實現。因此定義介面時,供客戶使用的介面匯出的函式不是私有的。介面的要點就是讓這些函式可以在其他模組中呼叫。在很多情況下,介面還會有一些為了實現介面功能但未無須開放給客戶的函式。但是,客戶可能會呼叫這些函式,或者客戶自定義函式時,可能會和該函式重名。在這種情況下,要求某一函式要被限定在某一模組中才能使用,這樣可以使得客戶無法呼叫這些函式,從而使介面與使用者間的抽象邊界更加穩定堅固。

函式如何私有化?

函式私有化是在原型和實現的前面使用關鍵字static,如:

static string buffer;

說明:

宣告函式為static在由幾個程式設計師參與開發的大型程式環境中也有好處。如果函式或者全域性變數沒有宣告static,組成整個程式的模組集合中的其他模組就不能使用這些名字,這樣的話,程式設計師可能就需要更多的溝通,提高開發成本。因此,static關鍵詞可以保證他們使用的名字對於自己模組的私有化。

如下的規則對於模組化開發來說是極好的指導。

靜態宣告原則:除了main函式和介面明確匯出的函式之外,所有的函式必須被宣告為static。

2018.05.09 12:35