我的小程序由幾個「模塊」 - 翻譯單元組成。有些實體是extern
,但其他實體是static
。用C語言聲明本地函數的方式
對於外部實體,我總是放一個前綴。內部的可以通過前面的static
來判斷。不過,我要尋找的命名約定清楚地傳達了實體
- 文件具體,從看不見外面
- 可以在不改變API-S
- 的風險被安全地改變如果前面沒有靜態的話,這是一個錯誤。
Python程序員使用領先的下劃線。 C程序員做什麼?
我的小程序由幾個「模塊」 - 翻譯單元組成。有些實體是extern
,但其他實體是static
。用C語言聲明本地函數的方式
對於外部實體,我總是放一個前綴。內部的可以通過前面的static
來判斷。不過,我要尋找的命名約定清楚地傳達了實體
Python程序員使用領先的下劃線。 C程序員做什麼?
static
聲明表達了您所問的內容。當然,它錯過了這個要求:
如果前面沒有靜態,這是一個錯誤。
但我會認爲這是一個愚蠢的要求。你說你在Python中使用_
,從構建一個文件的安全性角度來看(在C語言中,「編譯一個翻譯單元」)是嚴格低劣的。如果你忽略它,Python在運行時纔會注意到,行爲不會改變。也許你需要Python中的另一個要求來提醒讀者可能會丟失_
。 __
怎麼樣?但是如果那缺失呢?等等。如果你的程序沒有終止,它應該怎麼辦?你不能寫一個"does it stop"檢查。
無論如何,根據我的經驗,C開發人員實際上並不擔心這一點。如果它能幫助你閱讀,那麼制定你自己的觀點並堅持下去並不是不合理的。可能是s_
代表靜態模塊,m_
代表模塊,t_
代表翻譯單元,等等。我認爲這些類型的前綴是C和C++中特殊變量類型的弱「元規則」,例如,班級成員。
我建議不要將static
編碼到函數名中。爲什麼?因爲這個名字應該以清晰和簡明的方式傳達這個功能的用途。它的存儲位置以及可訪問的位置通常無關緊要。
請注意,此參數特定於功能上的static
。它不適用於變量名稱(我個人使用的k
-prefix爲這些)或全局變量(首先應避免的所有方法)上的const
。
我同意。 「在C中聲明本地函數的習慣方式」是使用'static',而不是爲函數和變量名創建一個並行的命名約定來做同樣的事情。 – chux
一個有爭議的聲明,@ P0W。在任何情況下,不要使用前導下劃線:它們是保留的(尤其是編譯器)。 – Kninnug
您可以像Go一樣執行操作:用大寫字母開始「導出」函數名稱,用小寫字母開始靜態函數名稱。 –
Python的使用方式是使用前導下劃線的* convention *,在c中,如果使用'static',則編譯器將對該符號的訪問限制到當前的翻譯單元。你可以使用任何你喜歡的約定,事實上,一個領先的下劃線對我來說非常直觀。 – dkrikun