變數私有化和函式私有化,以及私有化的好處
變數私有化
為什麼變數要私有化?
在一個結構良好的程式中,獨立的模組之間通過在模組間傳遞引數的函式呼叫來交換資料。在大多數情況下,尤其是剛開始養成程式設計習慣的時候,最好確保每個全域性變數不會被一個以上的模組引用。為了避免兩個模組引用同一個全域性變數的可能性,可以將變數私有化。
變數如何私有化?
變數私有化是在宣告前用關鍵字static,如:
static int cpos;
這個宣告定義cpos為一個全域性整型變數,在所定義的模組裡的任何地方都可見,但是對於別的模組是無效的,因此它是當前模組私有的。
說明:
在大多數情況中,最好認為static就是private(類似於C++)的同義詞,這樣更能貼切地描述它的用途。用關鍵詞static宣告變數可以使它們對於應用它們的函式來說是私有的。
函式私有化
為什麼函式要私有化?
有人可能會問,無論函式還是過程,本身就是為了執行某一功能,應該是是要被呼叫的,那麼為什麼還要私有化呢?這裡要清楚另外一個概念:介面。
介面的說明可參照以下資料:
介面很重要的作用之一是開放某些供使用者使用的介面,隱藏起介面內部複雜的實現。因此定義介面時,供客戶使用的介面匯出的函式不是私有的。介面的要點就是讓這些函式可以在其他模組中呼叫。在很多情況下,介面還會有一些為了實現介面功能但未無須開放給客戶的函式。但是,客戶可能會呼叫這些函式,或者客戶自定義函式時,可能會和該函式重名。在這種情況下,要求某一函式要被限定在某一模組中才能使用,這樣可以使得客戶無法呼叫這些函式,從而使介面與使用者間的抽象邊界更加穩定堅固。
函式如何私有化?
函式私有化是在原型和實現的前面使用關鍵字static,如:
static string buffer;
說明:
宣告函式為static在由幾個程式設計師參與開發的大型程式環境中也有好處。如果函式或者全域性變數沒有宣告static,組成整個程式的模組集合中的其他模組就不能使用這些名字,這樣的話,程式設計師可能就需要更多的溝通,提高開發成本。因此,static關鍵詞可以保證他們使用的名字對於自己模組的私有化。
如下的規則對於模組化開發來說是極好的指導。
靜態宣告原則:除了main函式和介面明確匯出的函式之外,所有的函式必須被宣告為static。
2018.05.09 12:35